编辑:这部分解决了!
所以我在一个我正在做的程序中有一堆计算,而且数字变得太长了,以至于我得到了溢出错误。它是由一个 50 位数字除以另一个 50 位数字之类的结果产生的。我需要一种将特定数字四舍五入到一定数量的有效数字的方法。
这里有更多信息。首先,我将四舍五入的所有数字将始终小于 1。数字可以小到 1E-50。我只关心前 10 位左右的有效数字。在继续下一个计算之前,我只需要一种方法将其四舍五入到大约 10 sig figs,以防止溢出错误。那,并且有一个数字达到 50 个数字是非常没用的。
我在想也许可以逐个数字地循环遍历数字?当数字等于 0 时,该程序可以将 1 加到计数器上,然后在遇到除零以外的任何值时跳出循环。然后下一步可以将数字截断到该计数器加上我想要的许多有效数字。
例如,对于 .000001234567812345678。它将返回 5 个零。如果我想要十个有效数字,我会做五 + 十 = 15。然后程序将只保留小数点后的前 15 位数字,因此该数字将被截断为 0.000001234567812。
另一个想法可能是使用日志。那么新数字的幂将是有效数字前面的零的数量。
我不知道的是,首先,如何逐位遍历一个数字,并检查每个数字是否为零。我也不知道如何将数字截断为一定数量的数字。
任何帮助将不胜感激!
编辑:这部分没有解决。
这么快再发一个帖子我会感觉很糟糕,所以我要在这里问这个问题。如果20分钟左右没有回复,也许我会再发一个帖子。为什么这不起作用?
Sub Rounding()
Tracker = 0
For i = 1 To 10
Tracker = Tracker + 1
Cells(1, Tracker) = Rnd
Cells(1, Tracker) = Application.Evaluate("=Round(Cells(1, Tracker), 4 - (Int(Log(Cells(1,Tracker))) + 1))")
Next
Columns("A:J").EntireColumn.AutoFit
End Sub
我在每个单元格中不断收到错误 #NAME?。这应该将每个数字四舍五入到四位有效数字。