タイトル : Re^3: 桁落ち? 投稿日 : 2021/07/23(Fri) 15:34 投稿者 : 魔界の仮面弁士
> ありがとうございました。下記で試して見ます。 > testDeciaml = CDec("368.6") - CDec("360") 試す場合、演算途中の式に、Single や Double が一切含まれないようにしてくださいね。 誤差が生じた後で CDec や CCur をかけても遅いので…。 > 8.60000000000002と表示されます。 十進数の『8』は、二進数だと「1001」で表されますよね。 十進数の『0.6』は、二進数だと「.1001100110011001100110011……」という循環小数になります。 そのため『8.6』という値を Single や Double の桁数で表現した場合には、 本来の値よりもわずかに小さい値(または少し大きな値)な「近似値」になってしまいます。 参考情報として、具体的に『8.6』の近似前後値を Single と Double 型の内部表現で表示してみました。蛇足までに。 https://www.vb-user.net/junk/replySamples/2021.07.23.15.18/Single.8.6.png https://www.vb-user.net/junk/replySamples/2021.07.23.15.18/Double.8.6.png https://www.vb-user.net/junk/replySamples/2021.07.23.15.18/Double.8.6_full.png 併せてこちらのツールも紹介しておきます。 https://tools.m-bsys.com/calculators/ieee754.php |