gpt4 book ai didi

C++:如何以有效的方式截断 double ?

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:17 24 4
gpt4 key购买 nike

我想将 float 截断为 4 位数字。有没有一些有效的方法来做到这一点?我目前的解决方案是:

double roundDBL(double d,unsigned int p=4)
{
unsigned int fac=pow(10,p);
double facinv=1.0/static_cast<double>(fac);
double x=static_cast<unsigned int>(d*fac)*facinv;
return x;
}

但是使用 pow 和 delete 在我看来效率不高。

亲切的问候

阿尔曼。

最佳答案

round(d*10000.0)/10000.0;

或者如果p必须是可变的;

double f = pow(10,p);
round(d*f)/f;

round 通常会被编译为一条指令,这比转换为整数并返回更快。要验证的配置文件。

请注意,double 可能无法准确表示到小数点后 4 位。您将无法真正截断任意 double,只能找到最接近的近似值。

关于C++:如何以有效的方式截断 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059756/

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