C语言 小数点后一位四舍五入的实现

  • 功能:输入float型变量,输出小数点一位四舍五入的结果
  • 举例1:输入1.65,输出1.7
  • 举例2:输入1.33,输出1.3

第一时间很容易想到使用四舍五入函数 round() 实现的方式:

c 复制代码
float My_Data.Data_Float;
My_Data.Data_Float = 1.65;
Data_Result = round(My_Data.Data_Float*10.0)/10.0; // 小数点后一位四舍五入
// 实测Data_Result = 1.6,而非需要的1.7

实测这种方式不能完全实现小数点后一位的四舍五入,输入1.75可以输出1.8,但是输入1.65时不能输出1.7。


推荐使用"加0.5,再用 trunc() 取整"的方式:

c 复制代码
float My_Data.Data_Float;
My_Data.Data_Float = 1.65;
Data_Result = trunc(My_Data.Data_Float*10+0.5)/10.0; // 小数点后一位四舍五入
// 实测Data_Result = 1.7

知道原理的朋友欢迎在评论区给出根本原因的分析~

相关推荐
小林C语言11 分钟前
C语言 | 文件读写检测
c语言
c7_ln1 小时前
MYSQL C_API使用全解
c语言·数据库·mysql
秋说9 小时前
【PTA数据结构 | C语言版】一元多项式求导
c语言·数据结构·算法
暮鹤筠10 小时前
[C语言初阶]操作符
c语言·开发语言
阿捏利15 小时前
C Primer Plus 第6版 编程练习——第7章(上)
c语言·编程题·c primer plus
jz_ddk16 小时前
[实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
c语言·算法·信号处理
码农Cloudy.17 小时前
C语言<数据结构-链表>
c语言·数据结构·链表
星竹晨L17 小时前
C语言——预处理详解
c语言·开发语言
lightqjx18 小时前
【数据结构】顺序表(sequential list)
c语言·开发语言·数据结构·算法
小立爱学习18 小时前
Linux 内存管理之address_space
linux·c语言