如何将文本框中的数字舍入为C#中的2位小数?

Bar*_* PM 3 c# parsing integer decimal

我有一个价格文本框,我想获得一个带有2位小数的十进制值,无论原始字符串是已经是十进制还是整数.例如:

input = 12 --> output = 12.00
input = 12.1 --> output = 12.10
input = 12.123 --> output = 12.12
Run Code Online (Sandbox Code Playgroud)

hmq*_*esy 5

您可以使用将.ToString()字符串作为格式的重载:

var roundedInput = input.ToString("0.00");
Run Code Online (Sandbox Code Playgroud)

当然,这会产生字符串类型.

简单地圆,你可以使用Math.Round:

var roundedInput = Math.Round(input, 2);
Run Code Online (Sandbox Code Playgroud)

您应该知道,默认情况下,Math.Round使用您可能不需要的"银行家舍入"方法.在这种情况下,您可能需要使用采用舍入类型枚举的重载:

var roundedInput = Math.Round(input, 2, MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

请参阅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
Run Code Online (Sandbox Code Playgroud)

根据你的情况,使用错误的技术可能会非常糟糕!