double
店近似值,因此這種情況下將不等於:
double d1 = 0.11;
double d2 = 0.44 - 0.33;
Console.WriteLine(d1 == d2);
decimal
專賣店值更接近它們是什麼不是做了double
所以這將是平等的:
Console.WriteLine((decimal)d1 == (decimal)d2);
但重要的是要指出,即使decimal
是一個近似值。例如,您無法使用小數存儲Pi的確切值。
衆所周知,比較.net中的double值是不安全的。
這一切都取決於您的計算所需的精度水平。對於一些計算來說,使用它是很好的,對於其他的則不然。
System.Double
(double
in C#)and System.Single
(float
in C#)被存儲爲近似值。例如:
double x = 0.1d;
x將存儲與該值最接近的可用雙精度值。
重要界限
這是要注意的是不像double
,一個decimal
不會將自身存儲的標準化,但它會記住零點非常重要的。例如,嘗試以下代碼:
decimal dec1 = 1.000000000m;
double dbl11 = 1.000000000;
Console.WriteLine(dec1); // outputs: 1.000000000 (remembers all 9 zeros)
Console.WriteLine(dbl11); // outputs: 1
<==Try Me==>
甲decimal
被存儲爲在存儲器中,但是double
和float
基座10被存儲在基部2他們都有以下組件:一個尾數,指數和符號。例如:
44.5可以在「十進制浮點」爲尾數4.45爲1的指數來表示,而4450將具有相同的尾數但3
指數你可以閱讀如果有興趣,請致電Floating Points和Decimals。
類題外話,但有趣的問題的
我是說某人小數和近似等。他們提出了這個問題:想象一下,你擁有一家商店,你以$ 1.00購買3件商品。你甚至想削減哪些客戶不得不承擔額外的費用並支付額外的費用?
可能重複[要比較雙倍和小數,我應該將double轉換爲小數還是將decimal轉換爲double?](http://stackoverflow.com/questions/10612207/to-compare-double-and-decimal - 應該我投 - 雙十進制或十進制到雙倍) – Alexander
@Alexander不,我在問我的問題之前看過這個問題。我的問題完全不同。 –
在該主題中有答案,該主題描述了這種轉換是可能的,而不會影響準確性。 – Alexander