- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道由于舍入错误问题,货币值应作为整数存储和处理。这对我来说很有意义,我明白了(我认为)。
但是税率呢?是否有任何理由需要将税率(不是税额、税率,如 6.5 或 8.125)存储为整数而不是小数?
如果我确实将税率存储为整数,我如何将税率应用于交易中的美元金额?如果我为 6.5% 的税率执行 10000 * 1.065($100.00 * 1.065),那么将 6.5% 存储在数据库中作为 6500 而不是 6.500 会有什么好处?我不认为将一个数字乘以或除以 100 次是容易出现舍入错误的事情。
我如何存储税率有关系吗?
最佳答案
首先,并不是你不应该使用小数。这是您不应该在想要获得确切值的地方使用浮点数。并非所有小数都是浮点数;请参阅 C# 中的十进制数据类型或 Java 中的 java.math.BigDecimal。
其次,10 的幂特别容易受到奇怪的浮点问题的影响,因为实现浮点的方式会导致无限重复小数以除以 10 的幂。参见 this question .这是一个简单的例子:
groovy:000> f = 0.1F // make a floating point number
===> 0.1
groovy:000> f * 100
===> 10.000000149011612
To resolve this issue, you need to provide appropriate rounding. With money this is easy as you know how many decimal places are appropriate and unless you have $70 trillion you won't get a rounding error large enough you cannot correct it.
groovy:000> d = new BigDecimal("0.1")
===> 0.1
groovy:000> d * 100
===> 10.0
关于floating-point - 税率是否需要存储为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26167262/
有谁知道有什么方法可以在美国各州更本地化的水平上轻松管理合并税率吗?例如,在弗吉尼亚州,我们将有 2 个单独的合并税率,如下所示: 阿尔伯马尔县 - 弗吉尼亚州 = 5.3% 亚历山大城 - 弗吉尼亚
我是一名优秀的程序员,十分优秀!