首页 > 解决方案 > 将整数值转换为小数值(十进制)

问题描述

寻找一种不使用字符串将正数(整数)从例如 123 转换为 0.123 的方法。可以是任意大小的整数。不关心负值。

Dim value As Integer = 123
Dim num As Decimal = "." & value.ToString

这看起来很简单,但我不确定如何使用数学来做到这一点。如何在不使用字符串的情况下进行转换?

标签: vb.netmath

解决方案


您可以使用 获取位数Log10。我认为最好的方法是:

Dim value = 123 'Or whatever other value
Dim digitCount = Math.Floor(Math.Log10(Math.Abs(value))) + 1
Dim result = value * CDec(10 ^ (-digitCount))

您需要使用Floor而不是Ceiling为了获得 0、10、100 等的正确结果。


推荐阅读