在項(xiàng)目中經(jīng)常出現(xiàn)double類型的數(shù)據(jù)在顯示時(shí)0000000000...1或者999999999999...9等情況出現(xiàn)装黑,這種情況有很多解決情況,可以從后端解決也可以從前端解決。
前端解決:
方法一:使用toFixed()函數(shù)
toFixed() 方法可把 Number 四舍五入為指定小數(shù)位數(shù)的數(shù)字。
使用語(yǔ)法為:NumberObject.toFixed(num);其中num是指規(guī)定小數(shù)位數(shù),是 0 ~ 20 之間的值毕谴,包括 0 和 20。如果省略了該參數(shù)距芬,將用 0 代替涝开。
var num = 557127.1299999999;
num.toFixed(2);
輸出結(jié)果為:557127.13
后端使用java解決:
方法一:使用BigDecimal對(duì)象
前面說(shuō)過(guò)詳細(xì)的說(shuō)明,不做詳細(xì)說(shuō)明了蔑穴,詳解見(jiàn) http://www.reibang.com/p/b2708c1b2c77
// import java.math.BigDecimal;
double num = 557127.1299999999;
num = new BigDecimal(num).setScale(7, BigDecimal.ROUND_HALF_UP).toPlainString();
System.out.println("num:" + "\n" + num);
String str = "557127.1299999999";
str = new BigDecimal(Double.parseDouble(str)).setScale(7, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("str :" + "\n" + str );
方法二:使用DecimalFormat對(duì)象
// java.text.DecimalFormat;
double num = 557127.1299999999;
DecimalFormat df = new java.text.DecimalFormat("#.00");
String str = df.format(num);
System.out.println("str :" + "\n" + str );
以上就是一些簡(jiǎn)單的處理java中double類型數(shù)據(jù)計(jì)算導(dǎo)致精度缺失的解決辦法忠寻。