C语言对浮点数变量小数点后两位的四舍五入

本文介绍了C语言中如何对浮点数进行四舍五入,以保留小数点后两位。通过示例代码详细解释了两种方法:先放大10倍再加0.5,然后除以10;以及直接放大100倍取余数后再除以100。文章特别强调了单精度浮点数在运算过程中的精度问题,导致了两种方法的不同结果。最后提出解决方案是将+0.5改为+0.51以弥补精度损失。此外,还讨论了浮点数在转换和存储时的误差问题,建议在比较浮点数时使用误差范围判断。
摘要由CSDN通过智能技术生成

一般有两种方法,以变量a = 2.55为例说明

1.将a(2.55)放大10倍得到b(25.5),+0.5得到c(26.0),然后除以10得到d(2.60)。

2.将a(2.55)放大100倍得到b(255),对10取余得到c(5),如果大于等于5,b+1,;如果小于5,b保持原样,最后b除以100,得到d(2.60)。

 

这里只讨论第一种。

直接贴出代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float source_number = 3.55f;
    float target_numer = 0;
    int exchange_numer = 0;     //中间转接数值
    //将放大倍数和强制类型转换为int分开操作
    target_numer = source_number * 10 + 0.5;   //放大十倍,然后+0.5
    exchange_numer = (int)target_numer;        //强制转换为int类型,取整部分,完成四舍五入
    target_numer = (float)exchange_numer / 10; //强制转换为float类型,然后除以10
    printf("target_numer = %f\r\n", target_numer);
    //将放大倍数和强制类型转换为int一起操作
    exchange_numer = (int)(source_number *

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值