Ⅰ 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。