c# – 使用Math.Round进行舍入问题
发布时间:2020-12-16 00:21:11 所属栏目:百科 来源:网络整理
导读: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 –
Module Module1 Public 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 Sub End Module 上面的代码结果为 > 43.523 – > 43.52 我需要43.565 – > 43.57而不是43.565 – > 43.56. 解决方法
首先,如果您关注精确的十进制值,则应考虑使用Decimal而不是Double.特别是,43.565并不能完全代表Double的开头.
但是,如果要指定“中点”的行为(即可以合理地向上或向下舍入的位置),请使用overload with a Console.WriteLine("{0} --> {1}",_ Math.Round(value,2,MidpointRounding.AwayFromZero)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |