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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

四舍五入小數(shù)位到小數(shù)點(diǎn)2位

四舍五入小數(shù)位到小數(shù)點(diǎn)2位

大話西游666 2019-06-01 16:13:51
四舍五入小數(shù)位到小數(shù)點(diǎn)2位如果值是200.3456,則應(yīng)格式化為200.34..如果是的話200,那應(yīng)該是200.00.
查看完整描述

4 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

這里有一個(gè)實(shí)用程序子彈(而不是截?cái)?/em>)雙到指定的小數(shù)位數(shù)。

例如:

round(200.3456, 2); // returns 200.35

原始版本;注意這個(gè)

public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    long factor = (long) Math.pow(10, places);
    value = value * factor;
    long tmp = Math.round(value);
    return (double) tmp / factor;}

這,這個(gè)壞壞在具有極高小數(shù)位數(shù)的拐角處(例如:round(1000.0d, 17))或大整數(shù)部分(例如:round(90080070060.1d, 9))。感謝斯隆因?yàn)槟阒赋隽诉@個(gè)。

多年來,我一直在使用上面提到的“不太大”的雙倍到小數(shù)點(diǎn)2或3位(例如,為了日志記錄目的在幾秒鐘內(nèi)清理時(shí)間:27.987654321987->27.99)。但是我想最好避免它,因?yàn)楦煽康姆椒ㄊ乾F(xiàn)成的,還有更干凈的代碼。

所以,用這個(gè)代替

(改編自這是路易斯·沃瑟曼的回答這張是肖恩·歐文寫的.)

public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(places, RoundingMode.HALF_UP);
    return bd.doubleValue();}

請(qǐng)注意HALF_UP是四舍五入的教學(xué)模式。仔細(xì)閱讀圓模式文檔,如果你懷疑你需要其他的東西,比如銀行家四舍五入.

當(dāng)然,如果您愿意,可以將上面的內(nèi)容內(nèi)聯(lián)成一行:
new BigDecimal(value).setScale(places, RoundingMode.HALF_UP).doubleValue()

在任何情況下

始終記住,浮點(diǎn)表示使用floatdouble不準(zhǔn)確..例如,考慮以下表達(dá)式:

999199.1231231235 == 999199.1231231236 // true1.03 - 0.41 // 0.6200000000000001

為了準(zhǔn)確起見,您想使用BigDecimal..在此過程中,使用接受字符串的構(gòu)造函數(shù),而不是接受雙字符串的構(gòu)造函數(shù)。例如,嘗試執(zhí)行以下操作:

System.out.println(new BigDecimal(1.03).subtract(new BigDecimal(0.41)));System.out.println(new BigDecimal("1.03").subtract(new BigDecimal("0.41")));

關(guān)于這一專題的一些極好的進(jìn)一步閱讀:


如果你想要字符串格式化而不是(或除了)嚴(yán)格四舍五入的數(shù)字,請(qǐng)參閱其他答案。

具體來說,請(qǐng)注意round(200, 0)回報(bào)200.0..如果你想輸出“200.00“,您應(yīng)該先進(jìn)行一輪,然后格式化輸出結(jié)果(如杰斯珀的回答).


查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果您只想打印一個(gè)double對(duì)于小數(shù)點(diǎn)之后的兩個(gè)數(shù)字,請(qǐng)使用如下所示:

double value = 200.3456;System.out.printf("Value: %.2f", value);

如果希望在String與其打印到控制臺(tái),不如使用String.format()同樣的論點(diǎn):

String result = String.format("%.2f", value);

或使用類DecimalFormat:

DecimalFormat df = new DecimalFormat("####0.00");System.out.println("Value: " + df.format(value));


查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

最簡(jiǎn)單的方法,就是做這樣的把戲;

double val = ....;val = val*100;val = Math.round(val);val = val /100;

如果Val從200.3456開始到20034.56,那么它被四舍五入到20035,然后除以得到200.34。

如果您希望總是舍入整數(shù),則可以通過轉(zhuǎn)換為int來截?cái)啵?/trans>

double val = ....;val = val*100;val = (double)((int) val);val = val /100;

這種技術(shù)在大多數(shù)情況下都是可行的,因?yàn)閷?duì)于非常大的雙倍(正或負(fù)),它可能會(huì)溢出。但是,如果您知道您的值將在一個(gè)適當(dāng)?shù)姆秶鷥?nèi),那么這應(yīng)該適用于您。


查看完整回答
反對(duì) 回復(fù) 2019-06-01
  • 4 回答
  • 0 關(guān)注
  • 628 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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