Rounding of float values
我有像12.256852651那样的double值,我想把它显示为一个浮点数,而不把它转换成字符串类型。
我怎样才能用C语言呢?
- math.round(价值;3)msdn.microsoft.com /美国/图书馆/ 75ks3aby.aspx
- -你是什么意思"的城市,而不是作为一个字符串格式"?你的格式编排号作为一个字符串为了显示它,不是吗?
- 也许它持续的在线作为一号(JSON,说)。它可能会需要两个仓库作为一个客户端的号码被转换为两个字符串显示在一个界面。我想我只是一个基于相似用例来使用。
我先转换成Decimal,然后在结果上使用Math.Round。这种转换并不是绝对必要的,但是如果在使用二进制浮点数的同时将小数点四舍五入,我总是会感到有点不安。
1
| Math.Round((Decimal)f, 3, MidpointRounding.AwayFromZero) |
你还应该研究一下MidpointRounding的选择,因为默认情况下,它使用的是银行轮,而不是你在学校习惯的那种。
- 记住,当将二进制(与System.Decimal相反)浮点类型四舍五入到大于0的小数位数时,通常"中点"不完全可表示。例如,"中点"12.2565(邻居12.256和12.257的平均值)并不完全可以表示为double,因为它的二元展开是无限的(周期性的)(这种情况很常见)。因此,在舍入之前有一个很好的理由尝试转换为decimal,如果你想要"中点"被实际击中。对于double,通常会有一个中间点应该在的"孔"。
如果您想显示它,它将是一个字符串,这是您需要使用的。
如果要在以后的计算中使用四舍五入,请使用Math.Round((decimal)myDouble, 3)。
如果您不打算在计算中使用它,但需要显示它,请使用double.ToString("F3")。