【发布时间】:2011-12-07 16:19:22
【问题描述】:
我有一个带有十进制类型参数的方法的 webService。此参数必须有 2 个浮点数位置。
我如何确保这一点?
public void callMyWS(decimal d1) {
...
decimal d2 = Ensure2FloatingPointPlaces(d1);
proxy.MyWSmethod(d2);
}
.
MyWSmethod(decimal myDD) { ... }
MyWSmethod 对这两个地方都有验证。所以:
如果“d1”为 1.00 => 一切正常。
如果“d1”为 1 => 验证失败。
主要问题是 d1 是否类似于整数。
我读了一些关于“m”后缀的东西。但是所有的例子都是常数,这不是很有帮助......你也可以看到它不是转换为字符串的目标。
我们来看看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 构建 webservice 客户端时,您将受到 2 个浮点位置的限制。
【问题讨论】:
-
“这个参数必须有2个浮点数”是什么意思?确保这对您有什么帮助?
-
十进制数有一组指定的数字,你不能强迫它变短或变长……你唯一能做的就是在浮点数之后显示一定数量的数字。