問題描述
我在 Java 中有一個非常簡單的除法(它是產品數量/每小時產量),但是每當我進行這種除法時,我都會遇到奇怪的錯誤:
I have a very simple division in Java (it's a product quantity / production per hour), however whenever I make this division I get strange errors:
float res = quantity / standard;
我用幾個值嘗試了上述除法,但總是出錯,但是我在其他任何地方都嘗試過并且正確的一個是:
I have tried the above division with several values and I always get errors, however the one that I've tried everywhere else and gotten right was this:
世界各地:
13.6 = 6800 / 500;
Java:
13.0 = 6800 / 500;
我研究過 BigDecimal 和 BigInteger,但是我還沒有找到用它們創建這種除法的方法,有沒有其他方法可以在 Java 中進行這種除法而不會出現精度錯誤??
I've researched BigDecimal and BigInteger, however I haven't found a way to create this division with them, is there any other way to do this division in Java without having precision errors??
任何幫助將不勝感激.
推薦答案
你正在對整數進行除法,這意味著你正在使用整數除法.
You're dividing integers, which means that you're using integer division.
在整數除法中,結果的小數部分被丟棄.
In integer division the fractional part of the result is thrown away.
嘗試以下方法:
float res = (float) quantity / standard;
^^^^^^^
上面的內容強制將分子視為 float
反過來促進分母也浮動,并且執行浮點除法而不是整數除法.
The above forces the numerator to be treated as a float
which in turn promotes the denominator to float as well, and a float-division is performed instead of an int-division.
請注意,如果您正在處理文字,則可以更改
Note that if you're dealing with literals, you can change
float f = 6800 / 500;
包含 f
后綴以使分母變為浮點數:
to include the f
suffix to make the denominator a float:
float f = 6800f / 500;
^
這篇關于為什么整數除法代碼給出錯誤的答案?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!