如何判断一double类型的数值是不是有小数部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断一double类型的数值是不是有小数部分相关的知识,希望对你有一定的参考价值。

转换成字符串,判断小数点位置
首先判断是否有小数点,如果没有,得到结果0
如果有小数点,使用indexof判断小数点位置,然后根据字符串总长度,如123.45,得到小数点位置为3,总长度为6,那么就得到的结果就是6-1-3=2,得到结论,如果小数点位置在a,总长度为b,那么结果就是b-1-a
private
int
getvalue(string
value)

string
strvalue
=
value.tostring();
if
(strvalue.contains("."))

int
maxlength
=
strvalue.length;
int
index
=
strvalue.indexof(".");
return
maxlength
-
1
-
index;

else

return
0;


看不懂再问
参考技术A java中常量
的浮点数字就被认为是double型的,而且不能直接赋给float型的变量
像float
a=1.2;
这样的编绎直接出错
要写成float
a=1.2f;
才行

double,float,BigDecimal类型数值的操作

 

float四舍五入保留两位小数

/**
* float四舍五入保留两位小数
* 
*/
public static float formatDecimal(float n) {
return (Math.round(n * 100)) / 100f;
}

double四舍五入保留两位小数

/**

* double四舍五入保留两位小数
* 
*/
public static double formatDecimal(double n) {
return (Math.round(n * 100)) / 100d;
}

BigDecimal向上取整

/**
* BigDecimal向上取整
* 
*/
public static BigDecimal formatUpRounding(BigDecimal b) {
return b.setScale(0, BigDecimal.ROUND_UP);
}

BigDecimal向下取整

/**
* BigDecimal向下取整
* 
*/
public static BigDecimal formatDownRounding(BigDecimal b) {
return b.setScale(0, BigDecimal.ROUND_DOWN);
}

BigDecimal四舍五入取整

/**
* BigDecimal四舍五入取整
* 
*/
public static BigDecimal formatRounding(BigDecimal b) {
return b.setScale(0, BigDecimal.ROUND_HALF_EVEN);
}

BigDecimal保留两位小数   转换成float

/**
* BigDecimal四舍五入保留两位小数 转float
* 
*/
public static float toFloat(BigDecimal b){
return b.setScale(2).floatValue();
}

BigDecimal转换成String

/**
* BigDecimal to String
* 
*/
public static String toString(BigDecimal b) {
return b.toPlainString();
}

以上是关于如何判断一double类型的数值是不是有小数部分的主要内容,如果未能解决你的问题,请参考以下文章

Double 判断小数位数

c语言,double类型数值比较为啥出错,如何比较两个double类型大小?

数值的整数次方-剑指Offer

辅助判卷程序的一些小bug

在c#中如何实现判断一个数值是不是为整数(或小数)?

在c#中如何实现判断一个数值是不是为整数(或小数) 谢谢