雖然內部表示有17個ditigs,但IEE754(64位)浮點應該正確表示15位有效數字。有沒有辦法強制第16位和第17位數字爲零?C++中的double類型數字
參考文獻: http://msdn.microsoft.com/en-us/library/system.double(VS.80).aspx: 。 。
請記住,浮點數只能接近十進制數,並且浮點數的精度決定了該數的精確度接近十進制數。默認情況下,Double值包含15位精度的十進制數字,但內部最多保留17位數字。浮點數的精度有幾個後果: 。 。
實例號: D1 = 97842111437.390091
D2 = 97842111437.390076
D1和D2在那些不應該是顯著16和17位小數不同。尋找方法迫使他們歸零。即 D1 = 97842111437.390000 D2 = 97842111437.390000
你說的是64位浮點數嗎?在15個重要的小數位? – John 2009-10-05 16:58:44
我不得不同意約翰W.這個問題有點含糊。內部表示不是十進制的。 – 2009-10-05 18:00:01
IEEE754雙打有52位尾數:http://en.wikipedia.org/wiki/Double_precision_floating-point_format 除了英特爾使用具有64位尾數(大約19位數的分辨率)的80位浮點寄存器外,我從來沒有聽說過任何不同的「內部表現」。你能提供一個你指的是什麼的參考嗎? – KeyserSoze 2009-10-05 18:02:30