java 數字保留2位小數 格式化爲價格類型

ava保留兩位小數問題:java

方式一:git

double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
方式一中使用BigDecimal中的設置精確值,會四捨五入
保留兩位小數  
---------------------------------------------------------------  

方式二:.net

java.text.DecimalFormat   df   =new   java.text.DecimalFormat("#.00");  
df.format(你要格式化的數字);
code

例:new java.text.DecimalFormat("#.00").format(3.1415926)orm

#.00 表示兩位小數 #.0000四位小數 以此類推...對象

方式三:blog

double d = 3.1415926;ci

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

%.2f %. 表示 小數點前任意位數   2 表示兩位小數 格式後的結果爲f 表示浮點型it

方式四:

NumberFormat ddf1=NumberFormat.getNumberInstance() ;

void setMaximumFractionDigits(int digits) 
digits 顯示的數字位數 
爲格式化對象設定小數點後的顯示的最多位,顯示的最後位是舍入的

這裏指出,這樣格式化數據的話,你會發現,小數點後面的精確度影響很大,首先你要理解format的原理,原理大概是這個公式同樣

float num=(float)(Math.round(totalPrice*100)/100);//若是要求精確4位就*10000而後/10000

這樣計算的話,本身能夠筆算試試,出來的結果跟你想要的結果偏差是比較大的

解決處理的方法:

把全部的Float數據,換成Double

方法五:

Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15爲就在前面補0

 

https://blog.csdn.net/qq_34412985/article/details/81022584

https://blog.csdn.net/qq_30983519/article/details/50515960

相關文章
相關標籤/搜索