java比较double
A. java语言中 如何判断 一个 double形变量a 是否是整数
lic static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入double类型的数字:");
double d = sc.nextDouble();
if((int)d == d){ //强制转换后会丢失精度,如果丢失精度的数和原数相等,说明就是整数
System.out.println("输入的数字是整数");
}else{
System.out.println("输入的数字不是整数");
}
B. Java中Double的比较
Double没有的,double有 Double是对象,看两个对象是否值相同,调用 equals方法
这也是解决double精度比较的方法。另外还有一种方法,你可以用写一个 double成员属性,然后在eclipse中重写equals方法,你会看到他是怎么处理两个double值是否相同的 sun公司用的是Double.doubleToLongBits(要比较的double值) != Double.doubleToLongBits(另一个double值) 这种方式
C. java里怎么判断一个变量,是否是int型,或者是否是double型
你可以用一个字符串来保存你的输入,然后你可以将输入利用String类库中的函数进行转换,或者利用contains()函数看,是否还有小数点。
System.out.println("please input the ten strings:");
Scanner sc = new Scanner(System.in);
String number = sc.nextLine();
if(number.contains(".")){
//说明是一个小数
double d = Double.valueOf(s);
}
else{
//
int i = Integer.valueOf(s);
}
D. java double 比较运算会精度丢失吗
publicBigDecimal(doubleval)
thedouble'sbinary
floating-pointvalue.
smallestvaluesuchthat(10scale×val)isaninteger.
Notes:
Parameters:
val-doublevaluetobeconvertedto
BigDecimal.
Throws:
NumberFormatException-ifvalisinfiniteorNaN.
.Onemight
(0.1)inJavacreatesa
.1(anunscaledvalueof1,
withascaleof1),butitisactuallyequalto
0..Thisisbecause0.1
(or,forthatmatter,as
).Thus,thevaluethatisbeingpassed
.1,appearances
notwithstanding.
TheStringconstructor,ontheotherhand,isperfectly
predictable:writingnewBigDecimal("0.1")createsa
.1,asonewould
expect.Therefore,isone.
BigDecimal,
conversion;
doubletoaStringusingtheDouble.toString(double)(String)constructor.Togetthatresult,usethestaticvalueOf(double)method.
这是java.math.BigDecimal类的其中一个构造器的介绍。好好看,格式好像乱了。。传图一直传不上去,不造是为啥。。。。
E. java double数据类型运算问题
使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。
特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。
这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。
所以一般对double类型进行运算时,做好对结果进行处理,然后拿这个值去做其他事情。
目前总结如下:
/**
* 对double数据进行取精度.
* @param value double数据.
* @param scale 精度位数(保留的小数位数).
* @param roundingMode 精度取值方式.
* @return 精度计算后的数据.
*/
public static double round(double value, int scale,
int roundingMode) {
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(scale, roundingMode);
double d = bd.doubleValue();
bd = null;
return d;
}
/**
* double 相加
* @param d1
* @param d2
* @return
*/
public double sum(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.add(bd2).doubleValue();
}
/**
* double 相减
* @param d1
* @param d2
* @return
*/
public double sub(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.subtract(bd2).doubleValue();
}
/**
* double 乘法
* @param d1
* @param d2
* @return
*/
public double mul(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.multiply(bd2).doubleValue();
}
/**
* double 除法
* @param d1
* @param d2
* @param scale 四舍五入 小数点位数
* @return
*/
public double div(double d1,double d2,int scale){
// 当然在此之前,你要判断分母是否为0,
// 为0你可以根据实际需求做相应的处理
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.divide
(bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
这样,计算double类型的数据计算问题就可以处理了。
另外补充一下 JavaScript 四舍五入的方法:
小数点问题
Math.round(totalAmount*100)/100 (保留 2 位)
function formatFloat(src, pos)
{
return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
}
F. java中两个Double型数据可以用(>,<,==,>=,<=)进行比较吗 请详细说明
可以啊,数值类型的都可以这样比较。如果是字符串就不行了,需要一些函数了
G. java里double类和double的区分 是不是在于一个是大写一个是小写
不是就大小写的区别问题。
Double 是类 double是基础数据类型。Double类型是double的包装类.
Double 和double之间的相互转化称为自动拆箱和自动装箱。
如果从对象角度理解,那么Double就是对象,double就是数值。
Double对象.doubleValue()才是Double对象的数值。
H. 在JAVA中怎么比较Double类型数据的大小
你如果是要普通比较直接用数学符号即可,指的在其jvm允许的范围内如果,你是要很准确的精度比较运算,由于精度问题,可能会有误差,建议使用BigDecimal类型!
//普通比较
Doubleobj1=newDouble("0.001");
Doubleobj2=newDouble("0.0011");
obj1.compareTo(obj2);
//精度准确比较
doublea=obj1;
doubleb=obj2;
BigDecimaldata1=newBigDecimal(a);
BigDecimaldata2=newBigDecimal(b);
data1.compareTo(data2);
//该方法两种类都有
publicintcompareTo(BigDecimalval)
/*将此BigDecimal与指定的BigDecimal比较。根据此方法,值相等但具有不同标度的两个BigDecimal对象(如,2.0和2.00)被认为是相等的。相对六个boolean比较运算符(<,==,>,>=,!=,<=)中每一个运算符的各个方法,优先提供此方法。
*参数:val-将此BigDecimal与之比较的BigDecimal。
*返回:当此BigDecimal在数字上小于、等于或大于val时,返回-1、0或1。
*/
I. 请问java中,Double类型和double有什么不同能否转换
Double 是类 double是基础数据类型。Double类型是double的包装类,在JDK1.5以后,二者可以直接相互赋值,称为自动拆箱和自动装箱。如果是这样,可以用Double中的方法,将包装类转为基本数据类型。
可以转换的。
J. java中double与Integer直接比较大小是否可以
当然可以直接比较了,比较中会把integer的转型为double再比较大小的