㈠ java中,強制轉換符把float轉換為int時,按四捨五入,還是直接丟掉小數部分
直接舍掉小數 比如float是4.7 轉換成int 後是4 而不是5 要四捨五入的話轉換前先加上0.5
比如 int i ; double j = 4.7; i = (int)(j+0.5);
㈡ java怎麼將double四捨五入
// 新方法,如果不需要四捨五入,可以使用RoundingMode.DOWN
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
return bg.doubleValue();
}
public static String formatDouble3(double d) {
NumberFormat nf = NumberFormat.getNumberInstance();
// 保留兩位小數
㈢ 關於java double類型四捨五入的演算法
這是為什麼呢?
//double類型直接轉換成為BigDecimal還是會造成精度丟失
解決方案
//把double類型首先轉換為String類型,然後再把String類型轉換成BigDecimal類型
實例代碼
importjava.math.BigDecimal;
publicclassB{
publicstaticvoidmain(String[]args){
print0();
print1();
print2();
print3();//解決方案
}
privatestaticvoidprint0(){
doubled=12345.15;
BigDecimalb=newBigDecimal(d);
System.out.println(b);
doubled1=b.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
privatestaticvoidprint1(){
doubled=1234.115;
BigDecimalb=newBigDecimal(d);
System.out.println(b);
doubled1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
privatestaticvoidprint2(){
doubled=2345.115;
BigDecimalb=newBigDecimal(d);
System.out.println(b);
doubled1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
privatestaticvoidprint3(){
doubled=2345.115;
BigDecimalb=newBigDecimal(String.valueOf(d));//方案一
//BigDecimalb=newBigDecimal("2345.115");//方案二
//BigDecimalb=newBigDecimal(""+d);//方案三
System.out.println(d);
doubled1=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
}
}
輸出
12345.
12345.1//四捨五入保留1位
1234.
1234.12//四捨五入保留2位
2345.
2345.11//四捨五入保留2位
2345.115
2345.12//四捨五入保留2位
㈣ java中,double d,用表達式表示d四捨五入後的int結果
(int) d,自動四捨五入吧
㈤ JAVA 將小數四捨五入成整數的方法
例子:
double d=1.2;
int i = (int)( d + 0.5);
㈥ java怎麼把double四捨五入
(1)首先我們想到用先乘以100取整後再除以100.0這種做法:
System.out.println(Math.round(4.015*100)/100.0);
執行結果為4.01,顯然沒有達到我們想要的結果。
(2)那用java.text.DecimalFormat呢?
System.out.println(new java.text.DecimalFormat("0.00").format(4.015));
System.out.println(new java.text.DecimalFormat("0.00").format(4.025));
執行結果都為4.02。
(3)用java.math.BigDecimal.
Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。
提供用於執行任意精度整數演算法 (BigInteger) 和任意精度小數演算法 (BigDecimal) 的類。
double abc = 4.015; //4.025
System.out.println(new java.math.BigDecimal(abc).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());
結果:4.01 (當使用4.025時結果為4.03)
看來還是達不到效果。
(4)用下面的方法:
System.out.println(Math.round(4.015*100 + 0.5)/100.0);
㈦ java中double四捨五入問題
(1)首先我們想到用先乘以100取整後再除以100.0這種做法:
System.out.println(Math.round(4.015*100)/100.0);
執行結果為4.01,顯然沒有達到我們想要的結果。
(2)那用java.text.DecimalFormat呢?
System.out.println(new java.text.DecimalFormat("0.00").format(4.015));
System.out.println(new java.text.DecimalFormat("0.00").format(4.025));
執行結果都為4.02。
(3)用java.math.BigDecimal.
Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。
提供用於執行任意精度整數演算法 (BigInteger) 和任意精度小數演算法 (BigDecimal) 的類。
double abc = 4.015; //4.025
System.out.println(new java.math.BigDecimal(abc).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());
結果:4.01 (當使用4.025時結果為4.03)
看來還是達不到效果。
(4)用下面的方法:
System.out.println(Math.round(4.015*100 + 0.5)/100.0);