自动格式化数字字符串

本文关键字:数字字符 字符串 数字 格式化 | 更新日期: 2023-09-27 18:08:40

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

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

这是完美的工作,我的问题是,当我输入一个示例值"1257.00"它应该被格式化为1250.00。困在这里,做了一个完整的研究,但我找不到解决方案,尽快帮助我。

自动格式化数字字符串

我已经发布了这个快速而肮脏的解决方案(控制台版本,但核心逻辑将在WinForms应用程序中工作相同),并发布在这个Fiddle:

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!");
    }