当简单的算术运算作为
formatC()
传递时,函数 x
会产生错误的数字格式。
示例:
formatC(29, width = 3, format = "d", flag = "0")
> "029"
这是正确的。但当我这样做时:
formatC(100*0.29, width = 3, format = "d", flag = "0")
> "028"
我在这里缺少什么? (R版本4.3.2(2023-10-31 ucrt))
您正在使用
format = "d"
。然而,R 并不将 0.29 * 100 存储为整数。你可以在这里看到这个:
sprintf("%.20f", 100 * 0.29)
# [1] "28.99999999999999644729"
使用整数格式会将其截断为 28。使用适当的格式,例如:
formatC(100 * 0.29, width = 3, format = "g", flag = "0")
# [1] "029"