c# – 使用Math.Round进行舍入问题

c# – 使用Math.Round进行舍入问题,第1张

概述Module Module1Public Sub Main() Dim values() As Double = {43.523, 12.65, 43.565} For Each value As Double In values Console.WriteLine("{0} --> {1}", value, Math.Round(value, 2)) N
Module Module1Public Sub Main()    Dim values() As Double = {43.523,12.65,43.565}    For Each value As Double In values        Console.Writeline("{0} --> {1}",value,Math.Round(value,2))    Next    Console.Readline()End SubEnd Module

上面的代码结果为

> 43.523 – > 43.52
> 12.65 – > 12.65
> 43.565 – > 43.56

我需要43.565 – > 43.57而不是43.565 – > 43.56.
但我仍然需要其他43.523 – > 43.52和12.65 – > 12.65按原样舍入.

解决方法 首先,如果您关注精确的十进制值,则应考虑使用Decimal而不是Double.特别是,43.565并不能完全代表Double的开头.

但是,如果要指定“中点”的行为(即可以合理地向上或向下舍入的位置),请使用overload with a MidpointRounding parameter:

Console.Writeline("{0} --> {1}",_                  Math.Round(value,2,MIDpointRounding.AwayFromZero))
总结

以上是内存溢出为你收集整理的c# – 使用Math.Round进行舍入问题全部内容,希望文章能够帮你解决c# – 使用Math.Round进行舍入问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1223575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存