【发布时间】:2015-11-16 19:57:46
【问题描述】:
这个问题涉及 VBA 编程
我使用的数据类型是Double,因为编译器无法识别数据类型Decimal。这是一个促成问题。
Private Number1 as Double
Number1 = (read from a data source which contains 2 decimals)
Number1 = 0.15 * Number1 '#client needs to have a 0.15 multiplier for Number1. This multiplication causes number format problems.
Number1 = Round(Number1, 2)
Number1 = formatNumber(Number1, 2)
不起作用。输出中的 Number1 中还剩下多于 2 位小数。
是否有一个简单的预建库解决方案来解决这个问题?还是我应该使用自定义方法来格式化数字?构建该自定义方法的推荐方法是什么?
【问题讨论】:
-
您想将数字截断到小数点后 2 位还是舍入到小数点后 2 位? 12.347 可以是 12.34 或 12.35。
-
我想将它四舍五入到输出的小数点后 2 位。如果舍入不可行,那么我可以接受 truncate 作为次要选项。
-
CCur类型转换函数将为您提供 4 位小数(四舍五入到第 4 位的高位或低位),但我不知道有任何可以为您提供 2 位。 -
您不能直接使用
Decimal,但您可以使用CDec将Decimal存储到Variant 中。 -
您可以做的是,强制您存储号码的范围仅显示 2 位小数,如下所示: Range("A1").NumberFormat = "0.00"