c语言中如何四舍五入?(c语言中如何四舍五入保留一位小数)

网友投稿 1571 2022-08-16

c语言中如何四舍五入?(c语言中如何四舍五入保留一位小数)

c语言中如何四舍五入?(c语言中如何四舍五入保留一位小数)

在我们日常工作学习过程中,经常会遇到用C语言进行浮点数转整数的四舍五入,乍看题目简单,通过自己的一顿猛如虎的操作答案却不对。在学习实验中如果出现错误还可以进行挽救,可如果真正到项目实践出现错误就会造成一发不可收拾。所以本文就带大家了解一下在C语言中如何使用四舍五入。

Math.Round的使用

我们可以使用Math.Round函数来对decimal类型的数值进行“四舍五入”处理。来看下面的代码:

decimal levyMoney1 = 77.24m;

decimal levyMoney2 = 24.56m;

//设置保留一位小数并输出

("money1对应的输出:" + Math.Round(levyMoney1, 1)).Dump();

("money2对应的输出:" + Math.Round(levyMoney2, 1)).Dump();

输出结果如下:

结果跟我们期望的一致!但是事实真的是这样吗?让我们下面再看个示例。

decimal levyMoney3 = 50.35m;

decimal levyMoney4 = 50.45m;

//C#的Round函数都是采用Banker’s rounding(银行家算法),即:四舍六入五取偶

("money3对应的输出:" + Math.Round(levyMoney3, 1)).Dump();

("money4对应的输出:" + Math.Round(levyMoney4, 1)).Dump();

输出结果如下:

纳尼?输出的竟然都是50.4?和我们理解的“四舍五入”不一致啊!这是因为C#的Round函数都是采用Banker’s rounding(银行家算法),即:四舍六入五取偶。所以结果才都是50.4。

正确表达四舍五入

那么,如何才能正确地表达四舍五入呢?Round的方法有个重载,其中第三个参数(MidpointRounding)用来表示舍入的规范。因此,四舍五入可以通过设置该参数为MidpointRounding.AwayFromZero来达到目的,如下:

decimal levyMoney3 = 50.35m; decimal levyMoney4 = 50.45m; ("money3四舍五入对应的输出:" + Math.Round(levyMoney3, 1, MidpointRounding.AwayFromZero)).Dump(); ("money4四舍五入对应的输出:" + Math.Round(levyMoney4, 1, MidpointRounding.AwayFromZero)).Dump();

输出结果如下:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基础语法教程||c语言求一元二次方程的根(求一元二次方程的根)
下一篇:入门python编程怎么选择书籍?(python 高级编程 书籍推荐)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~