目前在我的c#代码中有一个工作四舍五入的模型,并且完美地将具有超过2个小数位的数字舍入到小数点后两位,这很好。但是,当我让我们说double value = 100.6
时,我将其放入double dollar_value = Math.Round(value, 2)
,它仍然返回为100.6。
我想知道是否有办法将1位小数值转换为2位小数?
答案 0 :(得分:3)
数字不会以额外的零存储(因为这样做会浪费内存,无论是否有数字都是相同的)。为了以这种方式表示数字,您需要显示或将其存储为字符串。
string str = value.ToString("#.00", CultureInfo.InvariantCulture);
现在str
总是有2位小数。
答案 1 :(得分:1)
我不知道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
如果您希望“打印两位小数的美元金额”,其他答案可能会更好。但是,如果要将数字转换为内部使用,这是一种方法。
答案 2 :(得分:0)
如果希望字符串表示形式有两个小数点,请使用:
yourNumber.ToString ("0.00");
数字本身始终存储为~29位数字,无论其字符串表示如何。
答案 3 :(得分:0)
您的值只需在显示时进行格式化 - 例如value.ToString("N2")
会将其转换为带有两位小数的字符串。查看MSDN上的Standard Numeric Format Strings以查看更广泛的格式字符串列表。
此外,我只会在您准备好向用户显示值时将其转换为字符串,如果您在方法之间传递或计划执行任何操作,我会将其保留为数字类型(例如,双倍)进一步计算。否则,您将不必要地多次将值与字符串进行转换。