第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

java中擴展的雙值問題,我試圖添加兩個雙值但沒有給出準確度

java中擴展的雙值問題,我試圖添加兩個雙值但沒有給出準確度

狐的傳說 2021-12-01 19:43:04
給定的值是雙雙1 = 1.0814449990040142E7;雙雙2 = 7.0164302885665664E17;結(jié)果是 double1 + double2 = 7.016430288674711E17 在 Java 中手動計算的值為701643028867471089誰能解決我的問題。
查看完整描述

3 回答

?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

不幸的是,這是一個沒有免費午餐之類的事情。

Double 通過使用緊湊格式來獲得其性能。每個雙精度型正好占據(jù) 64 位。這允許在處理器和內(nèi)存之間進行非常有效的存儲和傳輸,使用寄存器來保存雙精度值,以及算術(shù)的硬件實現(xiàn)。BigDecimal 是一種數(shù)據(jù)結(jié)構(gòu),其大小取決于所表示的值,但可以遠大于 64 位。

您為 double 的效率付出的代價是它只能精確地表示 BigDecimal 可以精確表示的數(shù)字的一個子集。與您的文字最接近的雙精度數(shù)是 10814449.9900401420891284942626953125 和 701643028856656640。它們的確切總和是 701643028867471089.94042040216162825261626953125 它本身不是任何雙精度值的確切值。它被雙打 701643028867470976 和 701643028867471104 括起來,其中越接近的就是你得到的結(jié)果。

出于許多目的,雙打已經(jīng)足夠接近了。例如,如果您的變量代表測量的物理量,則測量誤差將使轉(zhuǎn)換為雙倍時的舍入誤差相形見絀。可以表示為終止小數(shù)的數(shù)字并不比其他有理數(shù)和無理數(shù)更重要。在這些情況下,使用雙精度和舍入輸出到輸入精度和累積舍入誤差證明的位數(shù)。

其他情況,例如某些財務(wù)計算,需要對小數(shù)進行精確算術(shù)。很少,小數(shù)沒有特殊意義,但您需要比 double 可以提供的精度更高的精度。在這兩種情況下,盡管存在性能成本,但 BigDecimal 是正確的數(shù)據(jù)類型。



查看完整回答
反對 回復(fù) 2021-12-01
?
DIEA

TA貢獻1820條經(jīng)驗 獲得超3個贊

Java 中的雙精度值不準確,您應(yīng)該使用 BigDecimal 類,它具有更好的精度。

有關(guān)更多信息,請參閱文檔:https : //docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html


查看完整回答
反對 回復(fù) 2021-12-01
?
交互式愛情

TA貢獻1712條經(jīng)驗 獲得超3個贊

只需按照您想要的方式對其進行格式化


double double1 = 1.0814449990040142E7; 

double double2 = 7.0164302885665664E17;


System.out.printf("%.2f", double1 + double2);

輸出701643028867471100.00


或者


System.out.printf("%.0f", double1 + double2);


查看完整回答
反對 回復(fù) 2021-12-01
  • 3 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號