gpt4 book ai didi

c++ - 确定小数点右边的非零位数

转载 作者:太空狗 更新时间:2023-10-29 23:34:44 24 4
gpt4 key购买 nike

我想计算小数点右边非零和非重复(即 1.999999999)的数量。例如:

x.xx = 2
x.xxx = 3
x.xxx000 = 3

我可以通过将数字转换为字符串来做到这一点,但我想知道是否有使用数学的更快方法。有什么想法吗?

谢谢。

编辑:由于数字在计算机中的表示方式,许多人似乎认为这是一件傻事。但是,请允许我解释问题的背景。假设您要编写一个方法来随机生成一个 float 。您生成的数字必须具有一定的精度,因此您必须将随机生成的数字四舍五入到指定的精度。例如,如果精度为 2,则您的随机数不能为 0.012,必须四舍五入为 0.01。问题是没有为您提供精度,而是为您提供增量,在上述情况下为 0.01。给定 0.01 或 0.002 或任何其他小于 1 的此类增量,您必须找到精度。

编辑:删除了我对术语“有效数字”的错误使用。

最佳答案

数量significant digits不是你通过查看数字来计算的东西。您可以根据用于计算您正在查看的数字的其他数字中的有效数字位数,或根据用于执行测量的仪器的精度来计算它。

既不显示也不使用无关紧要的数字,因此您的号码 x.xxx000 在小数点右侧有六位数字这一事实意味着所有这六位数字都是重要的。数字 2.3 与数字 2.300 不同。

当您有一个像 2300 这样的数字时,是否将零算作有效数字的问题就出现了,该数字是 10 的整数倍。有效数字是两位还是四位?用科学记数法写成:2.3 × 103 或 2.300 × 103

大多数语言(包括 C++)的原生数字类型不处理这种有效数字的概念。通常,他们甚至根本不处理数字;他们处理位。如果您的实现的 float 类型是 32 位,那么所有 32 位都始终被视为有效。

关于c++ - 确定小数点右边的非零位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1402624/

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