2017-01-29 4 views
-6
double sth = 250 - 249.99; 
Console.WriteLine(sth); 

なぜ代わりに0.010.009994507のように、このリターンsthは、いますか?なぜこの値を二重に返すのですか? C#

+2

[すべてのコンピュータ科学者が知っておくべきことについて浮動小数点演算](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg:このトピックを参照してくださいの詳細について

.html) – Plutonix

答えて

1

浮動小数点数(この場合は倍精度)は、10進値を正確に表すことはできません。詳細については、this page here

より正確な表現が必要な場合は、代わりにdecimalを使用してください。

+0

あなたの説明に感謝します! – johnatanasoff

0

ダブルを印刷すると、最初のx後の数字だけでなく、すべてのdouble値が出力されるためです。

String.Formatを使用すると、最初の2つの数字だけを印刷できます。

 double sth = 250.00d - 249.99d; 
     string sthString = String.Format("{0:0.00}", sth); 
     Console.WriteLine(sthString); 
関連する問題