gpt4 book ai didi

excel - 回合和工作表功能.回合

转载 作者:行者123 更新时间:2023-12-03 02:17:39 26 4
gpt4 key购买 nike

为什么生成的 A1 (0.224) 和 B1 (0.224000006914139) 不同?

Sub a()
Cells(1, 1) = Application.WorksheetFunction.Round(Rnd(-1), 4)
Cells(1, 2) = Round(Rnd(-1), 4)
Cells(1, 3) = "=a1=b1"
Cells(1, 4) = "'0.2240"
End Sub

如何复制 B1 并粘贴到 D1(保留四位小数)而不丢失尾随零?我可以用 rnd(-1)cells(1,2) 更改最后一个 "'0.2240" 吗?非常感谢。

最佳答案

您的问题源于 Rnd 返回数据类型 SingleSee here

Round 传递 numdecimalplaces> 0 和 Single 值时,它遵循该数据类型,并返回 SingleWorksheetFunction.Round 不会:它返回一个 double 值。 (如果 Round 传递给 Double,则返回 Double)

这在 VBA 本身内并不重要(请参阅下面的监 window 口图像以获取证据)

当将值放入 Excel 单元格中并将其转换为 Excel 的单元格数据类型时,会出现此问题。 Single 的转换会产生浮点精度问题

要解决此问题,您的代码可能是

Cells(1, 2) = Round(CDbl(Rnd(-1)), 4)

enter image description here

要将结果放入 Cell(1, 4) 作为文本,您可以使用

Cells(1, 4) = "'" & Format(Cells(1, 2), "0.0000")

Cells(1, 4) = "'" & Cells(1, 2).Text

注意:"'"& 是必需的,因为 Excel 将字符串识别为数字,并“有效地”将其转换回数字

关于excel - 回合和工作表功能.回合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57735960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com