簡體   English   中英

精度與精度Java浮點數

[英]precision vs accuracy java floating point number

根據以下站點:精度與精度。 精度=規格密封性。 准確性=正確性。 不要將精度與精度混淆。 http://introcs.cs.princeton.edu/java/91float/

有人可以定義然后解釋與Java浮點數有關的精度和准確性之間的區別嗎

如果您瀏覽IEEE 754的文檔,它將描述單精度和雙精度類型。 它說: “幾乎所有的硬件和編程語言都使用相同二進制格式的浮點數”。

普通格式的總長度為32或64位:

格式:單精度

總位數: 32

有效位: 23 +1個符號

指數位: 8

最小數字: 1.2⋅10(戰俘)-38

最大數字: 3.4⋅10(戰俘)38


格式:雙精度

總位數: 64

有效位: 52 +1個符號

指數位: 11

最小數字: 5.0⋅10(戰俘)-324

最大數字: 5.0⋅10(戰俘)-324

Java遵循關鍵字支持的單精度和雙精度類型。

float f = 0.1f; // 32 bit float, note f suffix

double d = 0.1d; // 64 bit float, suffix optional

如果在類,接口,方法上使用strictfp關鍵字,它將強制所有中間結果遵循IEEE 754值,並保證所有平台上的結果(准確性)相同。 如果沒有strictfp關鍵字,實現可以在可用的地方使用擴展的指數范圍,從而獲得更精確的結果並在許多常見CPU上更快地執行。

因此,作為用戶/程序員,可以指定精度(舍入值)。

例:

String.format("%.2f", 3.2399) // returns "3.24"
String.format("%.3f", 3.2399) // returns "3.240"

准確性是定義計算或規格符合正確值或標准的程度的東西。

有關更多詳細信息,請查看Java SE規范。

精度是您指定的位數,而精度則指定與真實結果的差。

舉個例子:

3.14不如3.149精確,但如果將其視為pi的值,則更精確。

Java float的精度約為6-7個十進制數字。 這取決於輸入的精度和算法的數值穩定性,您將如何獲得准確的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM