Ⅰ 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中怎麼把浮點數轉變成整數只保留整數部分
通過轉換為字元串,再截取整數部分:
float a = 1.1f;//定義一個浮點變數a
String str = String.valueOf(a);//浮點變數a轉換為字元串str
int idx = str.lastIndexOf(".");//查找小數點的位置
String strNum = str.substring(0,idx);//截取從字元串開始到小數點位置的字元串,就是整數部分
int num = Integer.valueOf(strNum);//把整數部分通過Integer.valueof方法轉換為數字
擴展資料:
Java的浮點類型有兩種:float和double。
Java的浮點類型有固定的表數范圍和欄位長度,欄位長度和表數范圍和機器無關,double類型代表雙精度浮點數,float類型代表單精度浮點數。
Java的浮點數遵循IEEE754標准,採用二進制數據的科學計數法來表示浮點數,對於float型數值,第1位是符號位,接下里8位表示指數,再接下來的23位表示尾數;對於double類型數值,第一位也是符號位,接下來的11位表示指數,再接下來的52位表示尾數。
Ⅲ java中double型如何取整
有float類型的
向上取整:Math.ceil() //只要有小數都+1
向下取整:Math.floor() //不取小數
四捨五入:Math.round() //四捨五入
Ⅳ 關於java double 小數向上取整處理
public static double getCeil(double d,int n){
BigDecimal b = new BigDecimal(String.valueOf(d));
b = b.divide(BigDecimal.ONE,n,BigDecimal.ROUND_CEILING);
return b.doubleValue();
}
Ⅳ java中如何取整
通過(int)方式進行取整,(int)是強轉,強制把其他類型轉換成整型。
語法:
int b =(int)浮點型變數;
例如:
doublea=1.22;
intb=(int)a;//強轉double為整型。,取整,結果為1
Ⅵ 如何完美獲得一個double值的整數部分
使用強制類型轉換,強制捨去小數部分。例如double a=3.14; int b= (int)a;使用math.h的標准函數。double floor(double x),double ceil(double x),使用floor函數。floor(x)返回的是小於或等於x的最大整數。
浮點運算就是實數運算,因為計算機只能存儲整數,所以實數都是約數,這樣浮點運算是很慢的而且會有誤差。大多數機器都是32位的,也就是說32位都用來表示整數的話,那麼對於無符號整數就是0 到 2^32-1,對於有符號的話就是-2^31 到 2^31-1。
相關信息
當我們用不同的電腦計算圓周率時,會發現一台電腦的計算較另一台來講結果更加精確。或者我們在進行槍戰游戲的時候,當一粒子彈擊中牆壁時,牆上剝落下一塊牆皮,同樣的場面在一台電腦上的表現可能會非常的呆板、做作;而在另外一台電腦上就會非常生動形象。
甚至與我們在現實中看到的所差無幾。這都是浮點運算能力的差異導致的。如果是實數的話,就不是這樣了,機器有兩種辦法表示實數,一種是定點,就是小數點位置是固定的,一種是浮點,就是小數點位置不固定,計算方法也比較麻煩,通常會比整數運算代價大很多。
Ⅶ 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中怎麼對一個數字取整
public class EXC {
public static void main(String[] args) {
//如果是將 一個 float或double類型的小數 轉換為整數 如下:
//利用java的強制類型轉換規則
double d = 12.3;
int i = (int)d;
System.out.println(i);
//如果是將一個表示小數的 字元串轉換為整數 如下:
//利用Integer包裝類
String s = "12.3";// 或12.3f
i = Integer.parseInt(s.split("\\.")[0]);
System.out.println(i);
}
}