在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  HTML/ JAVA BigDecimal四舍五入保留兩位小數(shù)問(wèn)題

JAVA BigDecimal四舍五入保留兩位小數(shù)問(wèn)題

double f = 1.155;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

f=0.155 打印結(jié)果等于 0.15
f=1.155 打印結(jié)果等于 1.15
f=2.155 打印結(jié)果等于 2.15
f=3.155 打印結(jié)果等于 3.15
f=4.155 打印結(jié)果等于 4.16

而且一會(huì)后 1.155 打印出 1.16 - -
感覺(jué)就像鬧著玩似的

回答
編輯回答
拽很帥

你把 double f = 1.155; 改成 String f = "1.155"; 之后,就不會(huì)存在你說(shuō)的問(wèn)題。
你需要了解下 浮點(diǎn)數(shù)的精度缺失問(wèn)題,然后知道為什么有些浮點(diǎn)數(shù)在內(nèi)存中計(jì)算機(jī)無(wú)法表示 —— 一開(kāi)始就是無(wú)法表示的,那么你把它作為參數(shù)傳遞給 BigDecimal,BigDecimal 也只能按照內(nèi)存中存在的東西來(lái)處理。

2018年6月29日 14:42