c语言中浮点数四舍五入 。 保留一个浮点数小数点后的6位,第3位要四舍五入。如 1.1234.567到1234.570000

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中浮点数四舍五入 。 保留一个浮点数小数点后的6位,第3位要四舍五入。如 1.1234.567到1234.570000相关的知识,希望对你有一定的参考价值。

意思是第3位之后的数都舍弃吗?

可以这样,

#include <stdio.h>
int main()

double d1 = 1234.567;
double d2 = d1 - (int)d1; // 求出小数部分
int i = d2 * 1000; // 取出小数后3位
if (i%10 >=5 )

i -= i%10;
i += 10; // 四舍五入

d1 = (int)d1 + (double)i / 1000;
printf("d1 = %lf \\n", d1);
return 0;

参考技术A 利用整数取整后自动截断小数的办法可以实现保留小数,比如:12344.567要保留两位小数并在第3位上进行四舍五入:double x=1234.567; int xx; x*=100; x+=0.5; xx=(int)x; x=(double)xx/100;本回答被提问者采纳

实现浮点数的四舍五入RoundOff,保留几位小数

直接上代码,非常简短

double myRound(double d,int n)
{
    d = d*pow(10,n);
    d += 0.5;
    d = (long)d;
    d = d/pow(10,n);
    return d;
}

上述代码中的d是我们要进行四舍五入的浮点数。n是我们要保留的小数点后位数。
四舍五入。主要靠这两行代码实现

  d += 0.5;
    d = (long)d;

强制类型转换,会直接舍去小数点后的数字,而先对d进行加0.5操作,则是为了四舍五入,比方4.1,加0.5后变为4.6,强转,舍去小数部分。变为4;又如5.7,加0.5后变为6.2。强转,舍去小数部分,变为6。

保留n位小数,主要靠

  d = d*pow(10,n);

    d = d/pow(10,n);

比方对,62.164保留2位小数,先乘10的二次方,为6216.4,四舍五入位6216。在除以10的二次方,为62.16。

以上是关于c语言中浮点数四舍五入 。 保留一个浮点数小数点后的6位,第3位要四舍五入。如 1.1234.567到1234.570000的主要内容,如果未能解决你的问题,请参考以下文章

用C语言怎么实现浮点数的四舍五入,保留两位小数点

C语言中如何对浮点数进行四舍五入?

C语言如何实现输出浮点数小数点两位(四舍五入法),但若小数点最后位为零则舍去??

python 中浮点数四舍五入的问题

Python 中浮点数四舍五入的问题

c语言如何让输出结果精确到两位小数