gpt4 book ai didi

c++ - C/C++ 计算小数位数?

转载 作者:IT老高 更新时间:2023-10-28 22:00:52 24 4
gpt4 key购买 nike

假设用户的输入是十进制数,例如。 5.2155(有 4 位小数)。可以自由存储(int,double)等。

是否有任何聪明(或非常简单)的方法来找出数字有多少位小数? (有点像你如何通过屏蔽最后一位来发现一个数字是偶数还是奇数的问题)。

最佳答案

我知道的两种方法,不幸的是都不是很聪明,但这更多是环境的限制而不是我:-)

第一个是将数字 sprintf 到具有 "%.50f" 格式字符串的大缓冲区中,去掉尾随零,然后计算小数点后的字符观点。这将受到 printf 系列本身的限制。或者你可以使用字符串作为用户输入(而不是 sprintfing 浮点值),从而完全避免浮点问题。

第二种方法是减去整数部分,然后迭代地乘以 10,然后再次减去整数部分,直到得到零。这受到 float 计算机表示的限制 - 在每个阶段,您可能会遇到无法精确表示的数字的问题(因此 .2155 实际上可能是 .215499999998)。类似于以下内容(未经测试,除了在我的脑海中,它与 COMX-35 差不多):

count = 0
num = abs(num)
num = num - int(num)
while num != 0:
num = num * 10
count = count + 1
num = num - int(num)

如果你知道你会得到什么样的数字(例如,它们都是小数点后 0 到 4 位数字),你可以使用标准浮点“技巧”来正确地做到这一点。例如,而不是:

while num != 0:

使用

while abs(num) >= 0.0000001:

关于c++ - C/C++ 计算小数位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1083304/

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