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

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

相关推荐
時肆4855 小时前
C语言造轮子大赛:从零构建核心组件
c语言·开发语言
xingzhemengyou17 小时前
C语言 查找一个字符在字符串中第i次出现的位置
c语言·算法
黎雁·泠崖9 小时前
吃透Java操作符进阶:算术+移位操作符 全解析(Java&C区别+完整案例+避坑指南)
java·c语言·python
我是大咖10 小时前
二级指针与指针数组搭配
c语言·数据结构·算法
iYun在学C10 小时前
驱动程序开发(字符设备驱动框架实验)
linux·c语言·嵌入式硬件
willingli13 小时前
c语言经典100题 61-70题
c语言·开发语言·算法
l1t17 小时前
在arm64 Linux系统上编译tdoku-lib的问题和解决
linux·运维·服务器·c语言·cmake
secondyoung17 小时前
Git使用:rebase用法
c语言·经验分享·git·vscode
kklovecode17 小时前
C语言之头文件,宏和条件编译
c语言·开发语言·算法
n***333518 小时前
C语言轮子大赛:挑战底层,突破极限
c语言·开发语言