前置常识
- 从
外界
接受的数字,例如从数据库中查询的数据,为了保证计算过程的准确性,默认使用的类型是长实型
- 长实型就是java中的
BigCecimal
,计算中没有浮点数的误差- 在SPL中,
长实数
的颜色是大红色
,但是浮点类型
是暗红色
遇到的问题
- 两个
有限
小数相乘
得到一个无限
小数- 那么相乘的两个数中一定有一个数是有毛病,一个数是数据库取得数据,很多位,但是是有限小数
- 另外一个是整数 / 1000 ,只有3位,也是有限小数
解决思路
- 分别对 两个数据 使用decimal函数处理,发现 整数 / 1000 得到居然不是长实数,而是浮点数
结论
外界
获取的数据会默认转换为长实数
- 程序中
计算
的数字,一般会是浮点数
,如果要求数据的准确性,建议使用decimal
函数转换
使用函数转变之后
width_list.find([material_code_out,equip_id_out]).width / decimal(1000):width