gpt4 book ai didi

c++ - 将 float 舍入为 n 位有效数字的 C 例程?

转载 作者:可可西里 更新时间:2023-11-01 17:22:57 26 4
gpt4 key购买 nike

假设我有一个float。我想将它四舍五入到一定数量的有效数字。

在我的例子中 n=6

所以说 float 是 f=1.23456999;

round(f,6) 会得到 1.23457

f=123456.0001 会得到 123456

有人知道这样的套路吗?

它在网站上有效:http://ostermiller.org/calc/significant_figures.html

最佳答案

将数字乘以合适的比例因子,将所有有效数字移至小数点左侧。然后四舍五入最后反转操作:

#include <math.h>

double round_to_digits(double value, int digits)
{
if (value == 0.0) // otherwise it will return 'nan' due to the log10() of zero
return 0.0;

double factor = pow(10.0, digits - ceil(log10(fabs(value))));
return round(value * factor) / factor;
}

测试:http://ideone.com/fH5ebt

但是正如@PascalCuoq 所指出的:四舍五入的值可能不能完全表示为浮点值。

关于c++ - 将 float 舍入为 n 位有效数字的 C 例程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094224/

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