0

使用 ac# windows 窗体应用程序,我需要自动格式化我的 textBox 值,这意味着我想将小数点前的最后一位数字设为零,目前我正在处理我的小数点后文本的自动格式

double value;
if (double.TryParse(textBox1.Text, out value))
{
    textBox1.Text = String.Format("{0:0.##}", value);
}

这是完美的,我的问题是当我输入一个示例值“1257.00”时,它应该被格式化为1250.00. 卡在这里并进行了全面的研究,但我找不到解决方案,请尽快帮助我。

4

1 回答 1

0

我已经发布了这个快速而肮脏的解决方案(控制台版本,但核心逻辑也将在 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!");
    }
于 2014-06-14T12:13:50.620 回答