java.math.bigdecimal,javamathbigdecimal cannot

http://www.itjxue.com  2023-01-04 15:41  来源:未知  点击次数: 

java.math.BigDecimal是什么意思

BigDecimal表示一个大整数,一般情况下很多整型都有个最大值的,但是有时候我们需要处理一些超过这个最大值的值,这个时候就出现了BigDecimal这样的类用于表达大数值,你这个错误应该是类型转换过程中出现了问题

为什么用java.math.BigDecimal 不用float和double

float和 double 计算的时候 , 主要是减法 , 会丢失精度 , 比如:

float a = 1.2f;

float b = 1.1f;

float c = a-b;

System.out.println(c);

这个时候 c是0.100000024

不只是在java中 , 数据库浮点型减法也会有这个问题

而 Decimal 是精确计算 , 理论上可以无限大 , 所以一般牵扯到金钱的计算 , 都使用 Decimal

java.math.BigDecimal cannot be cast to java.lang.Integer报错了

它个getObjBySql返回的是BigDecimal类型的

BigDecimal data = (BigDecimal) productPackageDao.getXXX();

如果想得到int值可以调用 data.intValue()

java.math.BigDecimal cannot be cast to java.lang.Integer说类型不能转换,求解释!

将其改为:

classroom.ClassroomBuilding = int.Parse(buildnum)

classroom.ClassroomStep = int.Parse(floor)

隐试转换说明:

1.两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 = 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换

2.两个参数都是字符串,会按照字符串来比较,不做类型转换

3.两个参数都是整数,按照整数来比较,不做类型转换

4.十六进制的值和非数字做比较时,会被当做二进制串

5.有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp

6.有一个参数是 decimal 类型,如果另外一个参数是 decimal 或者整数,会将整数转换为 decimal 后进行比较,如果另外一个参数是浮点数,则会把 decimal 转换为浮点数进行比较

7.所有其他情况下,两个参数都会被转换为浮点数再进行比较

所以,下面的几个sql语句有相同的效果:

select * from convert_test where areacode=0001 and period='20170511' and period='20170511';

select * from convert_test where areacode=1 and period='20170511' and period='20170511';

select * from convert_test where areacode=0001.0 and period='20170511' and period='20170511';

select * from convert_test where areacode=1.0 and period='20170511' and period='20170511';

(责任编辑:IT教学网)

更多

相关综合特效文章

推荐综合特效文章