亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

基本浮點值如何為-0.0?這意味著什么?

基本浮點值如何為-0.0?這意味著什么?

慕勒3428872 2019-12-15 16:12:54
原始浮點值怎么可能是-0.0?這意味著什么?我可以取消該功能嗎?當我有:  float fl;  然后fl == -0.0返回true,也是如此fl == 0。但是當我打印時,它會打印-0.0。
查看完整描述

3 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

因為Java使用IEEE浮點算術標準(IEEE 754)來定義-0.0和使用它。


可表示的最小數字在次正規有效位中沒有1位,并且被稱為正負零,由正負號確定。它實際上表示在零到相同符號的最小可表示非零數字之間的范圍內將數字四舍五入為零,這就是為什么它有一個符號,以及為什么它的倒數+ Inf或-Inf也有一個符號。


您可以通過添加解決特定的問題 0.0


例如


Double.toString(value + 0.0);

請參閱:Java浮點數復雜度


負零

...

(-0.0)+ 0.0-> 0.0的 運算


--


“-0.0”是當在負浮點數浮點運算結果,以便接近0所產生它不能正常地表示。



查看完整回答
反對 回復 2019-12-16
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

原始浮點值為什么可以是-0.0?


浮點數使用IEEE 754標準存儲在內存中,這意味著可能存在舍入錯誤。您永遠無法使用有限的資源存儲無限精度的浮點數。


您永遠不要測試浮點數是否等于==,即不要寫這樣的代碼:


if (a == b)

在哪里a和b在浮動。由于舍入錯誤,這兩個數字可能以不同的值存儲在內存中。


您應該定義要使用的精度:


private final static double EPSILON = 0.00001;

然后根據您需要的精度進行測試


if (Math.abs(a - b) < epsilon)

因此,在您的情況下,如果要測試給定精度的浮點數等于零:


if (Math.abs(a) < epsilon)

而且,如果要在GUI中輸出數字時格式化數字,則可以查看以下文章和NumberFormat類。



查看完整回答
反對 回復 2019-12-16
  • 3 回答
  • 0 關注
  • 524 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號