C#:确保小数有2个浮点位置

时间:2011-11-04 14:48:42

标签: c# decimal

我有一个webService,其方法采用decimal类型的参数。此参数必须有2个浮点位置 我该如何确保?

public void callMyWS(decimal d1) {
   ...
   decimal d2 = Ensure2FloatingPointPlaces(d1);

   proxy.MyWSmethod(d2);
}

MyWSmethod(decimal myDD) { ... }

MyWS方法对这两个地方进行了验证。所以:
如果“d1”是1.00 =>一切都很好。
如果“d1”是1 =>验证失败。

主要问题是d1是否类似整数
我读了一些关于“m”-suffix的内容。但是所有的例子都是常数,而且不是很有用......你也可以看到它不是转换为字符串的目标。

我们来看看xsd:

<xs:element name="MyWSmethod" type="tns:MyWSmethodType"/>
...
<xs:complexType name="MyWSmethodType">
    <xs:sequence>     
    ...
       <xs:element name="myDecimal" type="myDecimalType"/>
    ...
    </xs:sequence>
</xs:complexType>
...
<xs:simpleType name="myDecimalType">
    <xs:restriction base="xs:decimal">
        <xs:pattern value="[\-]?[0-9]+\.[0-9]{2}"/>
    </xs:restriction>
</xs:simpleType>

因此,当您从xsd构建Web服务客户端时,您将受到2个浮点位置的限制。

1 个答案:

答案 0 :(得分:0)

您可以使用Math.Round截断到两位小数,但无论如何都必须更新验证。

确保验证传递这些值:

  • 1
  • 1.11
  • 1.1
  • 0.1
  • 0.11