2011-04-01 36 views
0

我不是數學叔叔,而是一個真正的人告訴我:如何做定點數學而不是浮點數?

「而不是使用浮動 一點上做乘法,除法, 求和,三角學和 集成定點」

因此,我不應該使用double或float數據類型,我該怎麼辦?有沒有人有一個方便的片段或鏈接,顯示非數學叔叔的區別?

+0

大多數定點庫不會執行trig或calculus。 – 2011-04-01 09:17:10

+0

定點計算的理由是什麼?你希望讓你的應用程序更快嗎? – 2011-04-01 09:49:48

+0

不需要更精確。 – 2011-04-01 10:25:24

回答

2

該語言本身不支持除整數和浮點值之外的任何內容。但是,您可以使用整數輕鬆模擬定點值。例如,如果您決定要使用三位小數的固定點值,則可以使用例如12345來表示12.345。增加是直接的,你可以確定如何表達其他基本操作。

但是,這樣做三角不支持等

-1

無論「數學叔叔」是誰,他都是錯的。

除非你真的明白你在做什麼,否則無論使用原生雙精度還是系統數學庫,你想出的任何定點實現將會更準確,而不是。如果你真的明白你在做什麼,你就不會問這個問題。

所以不要擔心。使用double。如果遇到精度問題,首先要了解它們,並且只有在您理解後才擔心如何避免它們。

+0

鑑於你不知道他的問題空間的領域和涉及的數字的大小,似乎你不應該能夠作出關於他是否需要定點的明確聲明對象與否。 – aperkins 2011-05-26 03:46:35

+0

同意aperkins。如果我們將更多位分配給小數部分,則可以使用64位整數實現更高的精度。 – user172818 2012-02-07 14:32:59

+0

@ user172818:當然這是可能的。但是,「浮點」不一定意味着「雙倍」。大多數商品硬件支持80位浮點(具有正確舍入的64位精度,整數硬件不具備)。有很好的任意精度浮點庫,可以根據需要提供精確的結果。我並不是說沒有固定點的地方 - 我只是說固定點的天真使用有可能引入微妙的錯誤,所以你不應該僅僅因爲一個「數學叔叔」所說的就使用它。 – 2012-02-07 15:06:29

相關問題