我有一个价格文本框,我希望得到一个带有2位小数的十进制值,无论原始字符串是已经是小数还是整数。例如:
input = 12 --> output = 12.00
input = 12.1 --> output = 12.10
input = 12.123 --> output = 12.12
答案 0 :(得分:5)
您可以使用将字符串作为格式的.ToString()
重载:
var roundedInput = input.ToString("0.00");
当然,这会产生字符串类型。
要简单地舍入,您可以使用Math.Round
:
var roundedInput = Math.Round(input, 2);
您应该知道,默认情况下,Math.Round
使用您可能不需要的“银行家舍入”方法。在这种情况下,您可能需要使用采用舍入类型枚举的重载:
var roundedInput = Math.Round(input, 2, MidpointRounding.AwayFromZero);
请参阅此处使用MidpointRounding
的方法重载文档:http://msdn.microsoft.com/en-us/library/ms131275.aspx
另请注意,Math.Round
的默认舍入方法与decimal.ToString()
中使用的默认舍入方法不同。例如:
(12.125m).ToString("N"); // "12.13"
(12.135m).ToString("N"); // "12.14"
Math.Round(12.125m, 2); // 12.12
Math.Round(12.135m, 2); // 12.14
根据您的情况,使用错误的技术可能非常糟糕!!
答案 1 :(得分:3)
// just two decimal places
String.Format("{0:0.00}", 123.4567); // "123.46"
String.Format("{0:0.00}", 123.4); // "123.40"
String.Format("{0:0.00}", 123.0); // "123.00"
答案 2 :(得分:3)
使用此方法decimal.ToString("N");
答案 3 :(得分:0)
尝试
Input.Text = Math.Round(z, # Places).ToString();