C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 168 を表示中)
■96997 / )  Re[9]: 数値書式指定文字列からの変換
□投稿者/ 大谷刑部 (135回)-(2021/03/11(Thu) 14:34:46)
No96991 (ゆい さん) に返信
> ■No96990 (shu さん) に返信
>
> ありがとうございます。
>
>>Dim d As Single = CSng("4.2444972e-07")
>>Dim s1 As String = d.ToString("N20")
>>t(0) = CSng(s1)
> このようにしても t(0)の値は4.244497E-07にはなりませんか?
> "0.00000042444970000000"にしたいのです。

そもそも小数部に精度をもとめるならDecimal一択ですよ。
弁さんがおっしゃっているように、SingleもDoubleも2進数で保持してるので誤差が起こるのは必然です。
ただし、演算速度はSingle,Doubleの方が速いです。
なので地図の座標、それを応用した軍事目的の標的特定などは2進数で計算するのが適してますね。細部の精度より速度重視なので。
対して金融システムの計算は2進数型の使用は本来ご法度ですね。
現実の金融システムでSEの無知によりDoubleが多用されているのは案外見かけますが。

返信 編集キー/


管理者用

- Child Tree -