四舍五入到小数点后两位c#
本文关键字:两位 小数点 四舍五入 | 更新日期: 2023-09-27 17:59:44
目前在我的c#代码中有一个有效的舍入模型,可以将小数点后2位以上的数字完美地舍入到小数点后两位,这很好。然而,当我假设double value = 100.6
,并将其放入double dollar_value = Math.Round(value, 2)
时,它仍然返回100.6。
我想知道是否有一种方法可以将小数点后1位的值转换为小数点后2位?
数字不会用额外的零存储(因为这样做是浪费内存,因为无论有没有数字都是一样的)。为了以这种方式表示数字,您需要将其显示或存储为字符串。
string str = value.ToString("#.00", CultureInfo.InvariantCulture);
现在str
将始终有两个小数位。
我不知道C#方法,但在C++中我会使用以下两种方法之一:
double value = 23.666666 ; // example
value = 0.01 * floor ( value * 100.0 ) ; // There's a "floor" function in C# too
^请参阅https://msdn.microsoft.com/en-us/library/e0b5f0xb(v=vs.110).aspx
或
double value = 23.666666 ; // example
value = 0.01 * (double) ( (int)(value*100.0) ) ;
或
double value = 23.666666 ; // example
value = 0.01 * double ( int ( value*100.0 ) ) ; // same as previous, but more C++ like
如果你想"打印一个有两个小数位的美元金额",其他答案可能会更好。然而,如果你想转换数字以在内部使用,这是一种方法。
如果希望字符串表示有两个小数点,请使用:yourNumber.ToString ("0.00");
无论其字符串表示形式如何,数字本身始终存储为~29位数字。
您的值只需要在显示时进行格式化,例如value.ToString("N2")
会将其转换为小数点后两位的字符串。查看MSDN上的"标准数字格式字符串"以查看更广泛的格式字符串列表。
此外,只有当你准备好向用户显示值时,我才会将其转换为字符串,如果你在方法之间传递值或计划对其进行任何进一步的计算,我会将其保持为数字类型(例如双精度)。否则,你将不必要地多次将值转换为字符串。