四舍五入算法-C语言
四舍五入算法:如果要求精确到小数第N位,则需要对N+1进行运算,方法是将该 数 乘以 10^N+1 次方后 + 5,然后除以10并强制转换成长整形(Long)型,再将该数除以10的N次方,同时转换为浮点型(Doublefloat)。
步骤解析:1.将该 数 乘以 10^N+1 次方后 + 5 。因为保留N位小数 且 要把最后一位小数四舍五入,所以要乘N+1次方后在加 5 ,乘N+1次方是为了能保留N位小数且腾出最后一位小数进行四舍五入,加5是为了能把最后一位小数四舍五入。
步骤解析:2. 然后除以10并强制转换成长整形(Long)型。
因为四舍五入后需要把已四舍五入哪位舍去,则需要除10最后的转换为long型是为了能把小数点后面已四舍五入哪位去处(去尾)。这里 转换为long型需要一个临时变量支撑,不要转换为int型,因为怕int装不下那么大的数。
步骤解析:3. 再将该数除以10的N次方,同时转换为浮点型(Doublefloat)。因为要保证小数点回到原来的保留位,所以要除以10的N次方(加 .0 ),然后把他转换成浮点(Doublefloat)就完成了。
例子: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日
本文发布于:2024-01-28 13:15:18,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064189237681.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |