使用VB.net在小数点后找到第一个非零数字

时间:2016-05-10 14:13:39

标签: vb.net decimal-point

我正在寻找小数点后第一个非零数字的位置

到目前为止,我已设法使用

找到小数位数
Dim value As Single = 2.0533
Dim numberOfdecimaldigits As Integer = value.ToString().Substring(value.ToString().IndexOf(".") + 1).Length
MessageBox.Show(numberOfdecimaldigits)

如果我有4.0342,那么我希望在小数值后面的3位置得到2。我想对这些数据做些什么,是根据非零数字的位置在整数上加2。例如:对于4.0342,我希望系统向其添加0.02。如果它是5.00784,那么我想添加0.002。

有没有办法知道小数点后第一个非零数字的位置?

提前谢谢

2 个答案:

答案 0 :(得分:2)

我强烈建议不要在这里使用字符串 - 您正在执行数值算法,使用数字逻辑处理数字更直接,更有效:

value = value - Math.Floor(value) ' Get rid of integer digits
Dim position = 0

While value > 0 AndAlso Math.Floor(value) = 0
    value = value * 10
    position += 1
End While

If value = 0 Then Throw New Exception(…)
Return position

答案 1 :(得分:0)

这是防止无限循环的事情

value = value - Math.Floor(value) ' Get rid of integer digits

If value = 0 Then Throw New Exception(...)

value = 1/value ' Invert the value
Dim position = 0

While value > 1
    value = value / 10
    position += 1
End While

Return position