公司新来一个同事,把 BigDecimal 运用的炉火纯青!
2024年7月29日 - 网易
*小数点以后10位,以后的数字四舍五入**@paramv1被除数*@paramv2除数*@return两个参数的商*/publicstaticdoublediv(doublev1,doublev2){returndiv(v1,v2,DEF_DIV_SCALE);}/***提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指*定精度,以后...
详情
老板,用float存储金额为什么要扣我工资
2021年2月3日 - 网易
有效部分为规约形式的小数部分,取小数的前23位即10100110011001100110011。最后拼接到一起即01000000110100110011001100110011。到这里已经大致可以知道float为什么不精确了,首先在存储的时候就会造成精度损失了,在这里小数部分的二进制是循环的,但是仍然只能取前23位。double造成精度损失的原因也是如此那用什么类型存储金额?
详情
注意了,这些数值计算的坑千万别踩!
2020年12月18日 - 新浪
其实这个问题很好解释,double和float的精度是不同的。double的3.35相当于3.35000……5625,而float的3.35相当于3.34999……9375,String.format才有的又是四舍五入的方式舍入,所以精度问题和舍入方式就导致了运算结果与我们预期不同。Formatter类中默认使用的是HALF_UP的舍入方式,如果我们需要使...
详情
有哪些事实没有一定计算机知识的人不会相信?
2021年5月17日 - 网易
double的尾数部分是52位,float的尾数部分是23位,由于同时都带有一个固定隐含位(这个后面会说),所以double有53个二进制有效位,float有24个二进制有效位,所以它们的精度在十进制中分别是log10(2^53)约等于15.95和log10(2^24)约等于7.22位,因此double的有效数字是15~16位,float...
详情