如何在 VB6 中截断到特定的小数位数?
How to truncate to a specific number of decimals in VB6?
如何在 VB6 中将数字截断到特定的小数位数?
truncatedNumber = Fix ( originalNumber * 100 ) / 100 'Truncate to 2 decimals.
truncatedNumber = Fix ( originalNumber * 1000 ) / 1000 'Truncate to 3 decimals.
truncatedNumber = Fix ( originalNumber * 10000 ) / 10000 'Truncate to 4 decimals.
Fix() returns 数字的整数部分。
示例 01:将 3.1415 截断为两位小数。
- 3.1415 x 100 等于 314.15
- 修复(314.15) returns 314
- 314 / 100 等于 3.14
示例 02:将 3.1415 截断为 3 位小数。
- 3.1415 x 1000 等于 3141.5
- 修复(3141.5) returns 3141
- 3141 / 1000 等于 3.141
编辑:
正如 Complise 和 Bruno 所指出的,Int 不会正确截断负数。 Int 将-8.4 转换为-9,Fix 将-8.4 转换为-8。所以 Fix 是必经之路。
我会使用格式:
Dim d as Double
d = CDbl(Format("123.22323263",".0000"))
我会使用 fix() 而不是 int(),以便不改变负数并且不像 format() 那样四舍五入
?整数(-8.666*100)/100 , 修正(-8.666*100)/100
-8.67 -8.66
我同意上面的 Complise:如果目标是截断,Fix 是比 Int 更好的选择
Function TrimDigits(val As Double, Optional numdig As Integer = 2) As Double
Try
Return Fix(val * 10 ^ numdig) / 10 ^ numdig
Catch ex As Exception
Return 0
End Try
结束函数
如何在 VB6 中将数字截断到特定的小数位数?
truncatedNumber = Fix ( originalNumber * 100 ) / 100 'Truncate to 2 decimals.
truncatedNumber = Fix ( originalNumber * 1000 ) / 1000 'Truncate to 3 decimals.
truncatedNumber = Fix ( originalNumber * 10000 ) / 10000 'Truncate to 4 decimals.
Fix() returns 数字的整数部分。
示例 01:将 3.1415 截断为两位小数。
- 3.1415 x 100 等于 314.15
- 修复(314.15) returns 314
- 314 / 100 等于 3.14
示例 02:将 3.1415 截断为 3 位小数。
- 3.1415 x 1000 等于 3141.5
- 修复(3141.5) returns 3141
- 3141 / 1000 等于 3.141
编辑: 正如 Complise 和 Bruno 所指出的,Int 不会正确截断负数。 Int 将-8.4 转换为-9,Fix 将-8.4 转换为-8。所以 Fix 是必经之路。
我会使用格式:
Dim d as Double
d = CDbl(Format("123.22323263",".0000"))
我会使用 fix() 而不是 int(),以便不改变负数并且不像 format() 那样四舍五入
?整数(-8.666*100)/100 , 修正(-8.666*100)/100
-8.67 -8.66
我同意上面的 Complise:如果目标是截断,Fix 是比 Int 更好的选择
Function TrimDigits(val As Double, Optional numdig As Integer = 2) As Double
Try
Return Fix(val * 10 ^ numdig) / 10 ^ numdig
Catch ex As Exception
Return 0
End Try
结束函数