数学.圆形与字符串.格式
本文关键字:字符串 格式 数学 | 更新日期: 2023-09-27 18:16:58
我需要两个值四舍五入到两位数。什么是更可取的?
String.Format("{0:0.00}", 123.4567); // "123.46"
Math.Round(123.4567, 2) // "123.46"
数字大于0的Math.Round(double,digits)
在概念上是非常不干净的。但我认为它永远不应该被使用。double
是一个二进制浮点数,因此没有明确定义的十进制数字概念。
我建议使用string.Format
,或者当您只需要四舍五入以显示小数时仅使用ToString("0.00")
,如果您需要四舍五入实际数字(例如在进一步计算中使用它(,则使用decimal.Round
。
注意:使用decimal.Round
,您可以指定MidpointRounding
模式。通常需要AwayFromZero
舍入,而不是ToEven
舍入。
使用ToEven
取整,0.005m
取整为0.00
,0.015
取整为0.02
。这不是大多数人所期望的。
比较:
- ToEven:3.75轮对3.8轮
- ToEven:3.85轮至3.8(这不是大多数人所期望的(
- AwayFromZero:3.75轮至3.8轮
- AwayFromZero:3.85轮至3.9
有关详细信息,请参阅:https://msdn.microsoft.com/en-us/library/system.math.round.aspx
它们是不同的函数,如果需要显示输出,请使用第一个(这也会强制显示小数(。如果变量的类型为double,您将避免不可避免的.ToString((的开销。
请注意,第二个对数字进行四舍五入,但如果是整数结果,则只会得到整数(即:7对7.00(
这取决于你想用它做什么。
String.Format
将返回字符串,Math.Round(double)
将返回双精度。
前者输出字符串,后者输出双精度。你对结果有什么用?这个问题的答案就是你的问题的答案。
如果您想将此值作为string
返回,那么String.Format
更好,如果您想在这种情况下将此值返回为double
,则Math.Round
更好。这完全取决于你的要求。
Math.Round
不会添加任何小数点,如果没有小数点的话。String.Format
会。例如:Math.Round(2)
返回2;CCD_ 24返回2.00;