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

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

相关推荐
进击的小头3 分钟前
设计模式与C语言高级特性的结合
c语言·设计模式
代码无bug抓狂人23 分钟前
C语言之可分解的正整数(蓝桥杯省B)
c语言·开发语言·算法
历程里程碑1 小时前
21:重谈重定义理解一切皆“文件“及缓存区
linux·c语言·开发语言·数据结构·c++·算法·缓存
恶魔泡泡糖2 小时前
51单片机I2C-EEPROM
c语言·单片机·嵌入式硬件·51单片机
jiang_changsheng2 小时前
MCP协议的核心架构基础
c语言·开发语言·c++·python·comfyui
1+α3 小时前
工业通讯中的“顶梁柱”——RS485科普
c语言·stm32·嵌入式硬件·网络协议
晓13133 小时前
第三章 【C语言篇:结构化编程】 分支循环数组函数
c语言
Z9fish3 小时前
sse哈工大C语言编程练习22
c语言·开发语言·算法
代码无bug抓狂人3 小时前
C语言之产值调整(蓝桥杯省B)
c语言·开发语言·蓝桥杯
Cx330❀3 小时前
深入理解 Linux 基础 IO:从 C 库到系统调用的完整剖析
linux·运维·服务器·c语言·数据库·人工智能·科技