如何确保带小数的数字在VBA中包含精确的两位小数?
这个问题涉及VBA编程
我使用的数据types是Double
,因为数据typesDecimal
不被编译器识别。 这是一个贡献的问题。
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仍然只剩下两位小数。
有没有一个简单的预build库解决这个问题? 或者我应该做一个自定义的方法来格式化数字? build立这个自定义方法的build议方法是什么?
在下面的示例中,您可以看到在round()
函数之后的Number1
中只剩下2 Number1
数,或者在另一个类似的函数中
Sub test() Dim Number1 As Double Dim FX As Object: Set FX = WorksheetFunction Number1 = 0.15 * 1.236: Debug.Print Number1 'return 0.1854 Number1 = 0.15 * 1.236: Number1 = Round(Number1, 2): Debug.Print Number1 'return 0.19 Number1 = 0.15 * 1.236: Number1 = FX.Round(Number1, 2): Debug.Print Number1 'return 0.19 Number1 = 0.15 * 1.236: Number1 = FX.RoundUp(Number1, 2): Debug.Print Number1 'return 0.19 Number1 = 0.15 * 1.236: Number1 = FX.RoundDown(Number1, 2): Debug.Print Number1 'return 0.18 Number1 = 0.15 * 1.236: Number1 = FX.Ceiling(Number1, 0.01): Debug.Print Number1 'return 0.19 Number1 = 0.15 * 1.236: Number1 = FX.Floor(Number1, 0.01): Debug.Print Number1 'return 0.18 End Sub
testing
所以你的代码应该工作正常,问题必须在其他地方(例如单元格格式)。
如果您需要使用小数types,则可以声明为变体并进行转换。
Dim d As Variant d = CDec(3.14)
在猜测虽然,但在我看来,虽然,你的代码片断是不是在这里的错误….也许..
在我看来,在这个函数被调用之后,你正在从一个double转换到另外一个你需要集中精力的地方,而不是在这个函数中。