自动格式化数字字符串

时间:2014-06-14 12:03:57

标签: c# winforms autoformatting

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

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

这是完美的,我的问题是当我输入示例值“1257.00”时,它应格式化为1250.00。坚持到这里并做了充分的研究,但我找不到解决方案,尽快帮助我。

1 个答案:

答案 0 :(得分: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!");
    }