2.55 2.555 -> 2.56 2.565 -> 2.-6ren">
gpt4 book ai didi

c - C 中将正值四舍五入到小数点后 2 位

转载 作者:太空狗 更新时间:2023-10-29 17:24:18 25 4
gpt4 key购买 nike

通常,四舍五入到小数点后两位非常容易

printf("%.2lf",<variable>);

但是,舍入系统通常会舍入到最接近的偶数。例如,

2.554 -> 2.55
2.555 -> 2.56
2.565 -> 2.56
2.566 -> 2.57

而我想要实现的是

2.555 -> 2.56
2.565 -> 2.57

事实上,四舍五入在 C 中是可行的,但仅适用于 Integer;

int a = (int)(b+0.5)

所以,我要问的是如何使用正值的小数点后两位而不是整数来执行与上面相同的操作,以实现我之前所说的打印

最佳答案

目前尚不清楚您是否真的想要“四舍五入”,或者更确切地说“从零开始四舍五入”,这需要对负值进行不同的处理.

单精度二进制 float 至少精确到 6 位小数,double 为 20 位,因此通过 DBL_EPSILON(在 float.h 中定义)微调 FP 值将通过 printf( "%.2lf", x )n.nn5 值进行舍入到下一个 100。不影响非 n.nn5

值的显示值
double x2  = x * (1 + DBL_EPSILON) ; // round half-away from zero
printf( "%.2lf", x2 ) ;

对于不同的舍入行为:

double x2  = x * (1 - DBL_EPSILON) ;  // round half-toward zero
double x2 = x + DBL_EPSILON ; // round half-up
double x2 = x - DBL_EPSILON ; // round half-down

关于c - C 中将正值四舍五入到小数点后 2 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25104883/

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