阿里P8级架构师怎么处理电商业务中的数值计算的精度/舍入/溢出问题?1 计算器的灾难:10%+10%到底等于几?2 满目疮痍的Double3 救世的BigDecimal4 浮点数的舍入和格式化5 equals做判等就一定对?6 溢出问题
1 计算器的灾难:10%+10%到底等于几?我们人类以为是 0.2,可是打开手机计算器试试呢?解密国外计算程序使用的单步计算法。于是,a+b%表示a*(1+b%)。所以,手机计算器实际上在计算10%*(1+10%)= 0.11。再通俗点一句话说清运算原理。以8+10%为例,为什么=8.8而不是8.1?一起读:8元钱,加上10%的小费,一共是8.8元。最早的电子计算器并没有%,是后来加的。作为后续改进,它一定解决了计算场景中的常用痛点,而绝不是脑残。我推测很可能是西方人计算折扣、小费、利息等