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

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

相关推荐
superman超哥7 小时前
仓颉借用检查器工作原理深度解析
c语言·开发语言·c++·python·仓颉
ComputerInBook8 小时前
C++编程语言:标准库:第43章——C语言标准库(Bjarne Stroustrup)
c语言·c++·c语言标准库
米优10 小时前
C/C++中实现自定义自动释放堆内存空间类
c语言·开发语言·c++
binary思维10 小时前
C语言应用领域及操作Excel方法
c语言
LinHenrY122710 小时前
初识C语言(预处理详解)
c语言·开发语言
superman超哥11 小时前
仓颉内存管理深度探索:引用计数的实现原理与实战
c语言·开发语言·c++·python·仓颉
黎雁·泠崖11 小时前
C 语言结构体全解析:声明 + 内存对齐 + 位段 + 传参优化
c语言·开发语言
Once_day12 小时前
CC++八股文之基础语法(2)
c语言·c++
dawnButterfly12 小时前
C 语言标准、编译器与操作系统的关系
c语言·开发语言·c++
superman超哥12 小时前
仓颉语言智能指针深度实战:突破 GC 与所有权的边界
c语言·开发语言·c++·python·仓颉