我已经发布了这个快速而肮脏的解决方案(控制台版本,但核心逻辑也将在 WinForms 应用程序中工作)并发布在这个小提琴中:
https://dotnetfiddle.net/yvK9Ef
要点:需要手动减少“.”前的最后一位数字。为零。为此,我正在做的是使用字符串 Substring 函数获取除最后一个数字之外的所有内容并附加一个零。我同意这并不优雅,但它有效——你也可以尝试除法和修改的算术方法,直到你得到除了最后一个数字之外的所有东西。
string number = "1257.00";
double value = 0.00;
if (double.TryParse(number, out value))
{
string roundedNumber = number.Substring(0, (number.IndexOf('.') > 0 ? number.IndexOf('.') : number.Length)-1) + "0";
if (double.TryParse(roundedNumber, out value))
{
Console.WriteLine(String.Format("{0:0.##}", value));
}
else
{
Console.WriteLine("Error!");
}
}
else
{
Console.WriteLine("Error!");
}