2011-11-04 75 views
0

我有一個帶有一個帶有十進制類型參數的方法的webService。該參數必須有2個浮點位置。
我該如何確保?C#:確保一個小數有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構建Web服務客戶端,你將有2個浮點場所的限制。

+0

你是什麼意思「這參數必須有2個浮點位置「?究竟確保這一點能夠幫助你? – Oded

+1

十進制數字有一組指定的數字,您不能強制它變得越來越短......您唯一能做的就是在浮點數之後顯示一定數量的數字。 –

回答

0

您可以使用Math.Round截斷到小數點後兩位,但是您將不得不更新您的驗證。

確保您驗證通過這些值:

  • 1.11
  • 1.1
  • 0.1
  • 0.11
+0

首先和主要觀點:我無法訪問驗證。如果:定義了爲其提供基礎的xsd。我*不能*改變它。對於沒有浮點部分的值(例如1),我遇到了最多的問題。 – jahuer1