四舍五入算法-C语言

四舍五入算法-C语言

四舍五入算法:如果要求精确到小数第N位,则需要对N+1进行运算,方法是将该 数 乘以  10^N+1  次方后 + 5,然后除以10并强制转换成长整形(Long)型,再将该数除以10的N次方,同时转换为浮点型(Double\float)。

步骤解析:1.将该 数 乘以  10^N+1  次方后 + 5 。因为保留N位小数 且 要把最后一位小数四舍五入,所以要乘N+1次方后在加 5 ,乘N+1次方是为了能保留N位小数且腾出最后一位小数进行四舍五入,加5是为了能把最后一位小数四舍五入。

步骤解析:2. 然后除以10并强制转换成长整形(Long)型。

因为四舍五入后需要把已四舍五入哪位舍去,则需要除10最后的转换为long型是为了能把小数点后面已四舍五入哪位去处(去尾)。这里 转换为long型需要一个临时变量支撑,不要转换为int型,因为怕int装不下那么大的数。

步骤解析:3. 再将该数除以10的N次方,同时转换为浮点型(Double\float)。因为要保证小数点回到原来的保留位,所以要除以10的N次方(加 .0 ),然后把他转换成浮点(Double\float)就完成了。

例子:1234.567保留后两位小数点 且 四舍五入。

代码如下:

/*
*时间:    2020年9月14日 09:05:00
*例: 1234.567保留后两位小数点 且 四舍五入。
*核心:   乘除步骤 和 转换步骤
*/
#include<stdio.h>
int main()
{
    double f = 1234.567;
    long temp;
    temp = (long)((f*1000)+5)/10;  //乘10n+1次方 且 加5 再 除 10 并 转换为LONG型
    f = (double)(temp / 100.0);    // 除10n次方 并 转换为浮点型。★这里要是100.0 因为temp是long型,若不加则错★
    printf("%lf",f);

return 0;
}

运行结果如下:

 

2020年9月14日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值