2016-12-08 9 views
1

私は112.1(倍精度浮動小数点型)で3(整数型)を掛けようとすると、得られる結果には小数点以下の桁が多く含まれています。整数倍精度は非常に奇妙な出力を与えます

Integer a=3; 
Double b=112.1; 
Double result=a*b = 336.29999999999995 

しかし、2(整数)に112.1(倍精度)を掛けると、小数点は非常に小さくなります。

Integer a=2; 
Double b=112.1; 
Double result=a*b = 224.2 

誰も私にこの奇妙な行動が起こる理由を教えてもらえますか?

+1

ベース2には「double」が格納されているため、ベース10には格納されていないためです。 – 4castle

+2

[SMBC - シークレットロボットインターネット](http://www.smbc-comics.com/?id=2999)。 –

+0

haha​​ @ElliottFrisch – GurV

答えて

0

分数の実際の10進表現を保存することはできません。

これは、コンピュータがバイナリを使用して小数点値などの値を保存するためです。

したがって、実際に保存されたものと保存するものにはいくつかの違いがあります。

関連する問題