C# 自动格式化数字字符串

C# 自动格式化数字字符串,c#,winforms,autoformatting,C#,Winforms,Autoformatting,使用c windows窗体应用程序时,我需要自动设置文本框值的格式,这意味着我希望将小数点前的最后一位数字设置为零,目前我正在使用 double value; if (double.TryParse(textBox1.Text, out value)) { textBox1.Text = String.Format("{0:0.##}", value); } 这是完美的,我的问题是,当我输入一个示例值1257.00时,它的格式应该是1250.00。我被困在这里,做了充分的研究,但我找不

使用c windows窗体应用程序时,我需要自动设置文本框值的格式,这意味着我希望将小数点前的最后一位数字设置为零,目前我正在使用

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

这是完美的,我的问题是,当我输入一个示例值1257.00时,它的格式应该是1250.00。我被困在这里,做了充分的研究,但我找不到解决办法,请尽快帮助我

我已经发布了这个又快又脏的解决方案控制台版本,但在WinForms应用程序中,核心逻辑也会起到同样的作用,并发布在这个提琴中:

要点:您需要手动减少输入前的最后一位数字。到零。为此,我要做的是使用string 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!");
    }

如果我输入1257.57,结果应该是什么?是1250.57还是1250.00?应该是1250.00,怎么样?双d=1257.00;d=d-d%10@user3021112什么不起作用?d将是1250,正如你所期望的那样。@L.B如果你不介意的话,你能给我解释一下逻辑吗。我不知道在将此代码重写到windows时在哪里出错。你能发布你的代码吗?如果您转到上面我提供的链接,您可以更改第7行数字变量的值,并看到输出根据您指定的内容进行更改。是的,这工作非常好。对不起,我出去晚了,刚才试过了。