簡體   English   中英

Java和C之間的浮點類型有什么區別嗎?

[英]Is there any difference of the floating point type between Java and C?

我正在將一個項目從 C 導入到 Java,其中涉及大量浮點運算。

將 C 浮點類型轉換為 Java 是否有任何特殊規則需要注意?

Java 有規則來管理浮點計算中的中間結果是否可以使用比最終結果更高的精度。 您應該研究strictfp關鍵字。

如果您的應用程序打算在多個平台上運行。 我不確定C ,但在 java 中,精度取決於平台,確切地說,在某些平台上,計算可能比其他平台更精確,因此導致比較是假而不是真。 為了解決這個問題,有一個可以應用於變量或方法的strictfp修飾符,它使精度保持不變,因此您對浮點數的比較操作將在所有平台上產生相同的結果。

除了比較浮點數之外,下面的代碼是它的常用方法:

public boolean floatEquals(float a, float b, float epsilon) {
    return Math.abs(a-b) < epsilon;
}

Epsilon 是一個小數,例如 0.00001

不用擔心,不需要特殊規則。

暫無
暫無

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

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