四舍五入算法-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日
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/13664954.html