我正在寻找小数点后第一个非零数字的位置
到目前为止,我已设法使用
找到小数位数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。
有没有办法知道小数点后第一个非零数字的位置?
提前谢谢
答案 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