簡體   English   中英

Convert.ChangeType搞砸了返回值

[英]Convert.ChangeType messing up return value

我們在代碼庫中進行了多年驗證,直到現在為止還算不錯。 當圖片中的小數點后四位開始出現問題時,就開始出現此問題。 要可視化,請查看以下代碼行;

//upto 3 decimal, returns just fine
//temp is equal to 1000.003
var temp = System.Convert.ChangeType("1000.003", TypeCode.Single);

//Test for values upto 4 decimals
//Iteration:1 
//Supplied 1000.0001 Return 1000.00012
var temp1 = System.Convert.ChangeType("1000.0001", TypeCode.Single);

//Iteration:2
//Supplied 1000.0004 Return 1000.00043
var temp2 = System.Convert.ChangeType("1000.0004", TypeCode.Single);

//Iteration:3
//Supplied 1000.0007 Return 1000.00067
var temp3 = System.Convert.ChangeType("1000.0007", TypeCode.Single);

為什么這樣做呢? 還有另一件事是,如果我將TypeCode更改為double那么可以保存精度,為什么?

MSDN

盡管內部最多可保留9位數字,但“單個”值最多具有7位小數位數的精度。

您遇到的情況是,您傳入的數字不能完全表示為Single ,因此它可以為您提供最接近的Single值。 如果必須精確保留十進制表示形式,則Decimal是更合適的類型。

注意,小數點后有四位數字是無關緊要的。 您可能會遇到與100,000,010數字相同的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM