Ⅰ java double類型
double類型直接進行運算會出現精度問題,可先轉換為字元串之後再進行運算。
import java.math.BigDecimal;
public class Arith {
// 默認除法運算精度
private static final int DEF_DIV_SCALE = 10;
// 這個類不能實例化
private Arith() {
}
public static double add(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.add(b2).doubleValue();
}
public static double sub(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.subtract(b2).doubleValue();
}
public static double mul(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.multiply(b2).doubleValue();
}
public static double div(double v1, double v2) {
return
div(v1, v2, DEF_DIV_SCALE);
}
public static double div(double v1, double v2, int scale)
{
if (scale < 0) {
throw new
IllegalArgumentException(
"The
scale must be a
positive integer or
zero");
}
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return b1.divide(b2, scale,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double v, int scale) {
if
(scale < 0) {
throw new
IllegalArgumentException(
"The
scale must be a
positive integer or
zero");
}
BigDecimal b = new
BigDecimal(Double.toString(v));
BigDecimal one = new
BigDecimal("1");
return b.divide(one, scale,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class test {
public static void main(String[] args)
{
double d1=0.2;
double d2=0.1;
double
d3=d1+d2;
System.out.println(Arith.add(d1,
d2));
System.out.println(Arith.sub(d1,
d2));
System.out.println(d3);
}
}
Ⅱ Java中是怎麼確定double的長度
int x=a 就是給變數 x 定義了 int 的類型,a 就是這個變數的值,它是以二進制存儲的,例如數字 2在 Java 虛擬機中存儲為 0000 0010。
double 是一個浮點數的變數定義,為 64 位(bit),一個 double 型的數字變數,長度同樣是有限的,然而由於 double 變數不是用二進制來存儲的,所以也沒有多少人明白 double 類型變數的小數部分是怎樣存儲在虛擬機中的。你可以試著用 System.out.println 的方式在命令中列印出兩個double 變數 0.1+0.2 的和,結果為 0.3000.....4,這就是它不用二進制的方式存儲造成的結果。
如果你想確定的是一個數的長度(位數),我不知道 getLength 這個方法對數字有沒有作用,如果沒有的話就轉變成 String 的變數,再使用 getLength 的方法確定長度。
double n=0.1234567;
String N=Double.parseDouble(n);
這樣 N 這個變數就絕對能確定長度了,但是要注意的是,在 String 里,小數點同樣算作一位,不要忘記去掉!
Ⅲ 在java中 浮點類型如何定義
與表示整數的整型不同,浮點型代表的是實數,其實就是包含小數的部分。我們也知道現實世界中是由很多復雜的數據的,所以需要這種表示實數的數據類型的支持。
一、浮點型常量 Java的實常數有兩種表示形式:十進制數形式,由數字和小數點組成,且必須有小數點,如0.123, .123, 123. ,123.0 。 2.科學計數法形式。如:123e3或123E3,其中e或E之前念蠢必須有數字,且e或E後面的指數必須為整數。 實常數在機器中佔64位,具有double型的值。對於宴高昌float型的值,則要在數字後加f或F,如12.3F,它在機器中佔32位,且表示精度較低。
二、浮點型變數 浮點型變數的類型有float和double兩種。數據類型所佔位數的范圍: float 32位 3.4e-038~3.4e+038 ; double 64位 1.7e-308~1.7e+308 ; 雙精度類型double比單精度類型float具有更高的精度,和更大的表示範圍,常常用於科學計算等高精度場合。
三、浮點型變數晌扒定義舉例 float f; //指定變數f為float型 double d; //指定變數d為double型 與C、C++不同,Java中沒有無符號型整數,而且明確規定了整型和浮點型數據所佔的內存位元組數,這樣就保證了安全性、魯棒性和平台無關性
Ⅳ double在java里起什麼作用
double可以定義一個浮點數類型,就是含有小數點的數字。比如你要賦值一個數為1.1,那麼他就不能用int定義,只能用double。