(首先:这不是 Format numbers with floating points and sign in textbox in C# 的副本)
我正在使用 dodald ( https://stackoverflow.com/a/27510646/3179989 ) 的解决方案来格式化带有 float 和符号的数字,以使它们基于 float 对齐:
textbox1.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number1);
textbox2.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number2);
textbox3.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number3);
textbox4.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number4);
textbox5.Text = String.Format("{0:+;-}{0,9:0.00000;0.00000}", number5);
它非常适用于像 -1.23456 这样的数字(结果为“- 1.23456”),但是如果数字是 1.2,那么这会将其更改为“+ 1.20000”。
问题: 无论如何要避免任何额外的零? 如何使用格式化参数而不是使用 (text + "") 在文本末尾添加空格?
提前致谢
编辑:在这里澄清这一点是我正在寻找的:
-123.123456
+ 1.123456
- 0.123456
- 0.123
+ 1.1
- 12.123456
我有多个垂直对齐的文本框。我希望数字按照上面介绍的方式显示,其中浮点的位置始终固定且垂直对齐。 dodald ( https://stackoverflow.com/a/27510646/3179989 ) 提供的解决方案仅适用于具有五个小数的数字,例如 -1.23456(结果为“- 1.23456”),但是如果数字为 1.2,则他的解决方案会将其更改为“+ 1.20000”。我想删除字符串中添加的零。
最佳答案
您可以通过使用字符串生成器来使用此代码,您会发现小数点右侧的所有零都已删除,这在控制台中显示在 (1555454545445.20000000000000000) 之前和 (1555454545445.2) 之后:
static void Main(string[] args)
{
string input = "1555454545445.20000000000000000";
StringBuilder sb = new StringBuilder(input);
for (int i = 0; i < input.Length-2; i++)
{
if (input[i] == '.')
{
if (input[input.Length - 1] == '0')
{
for (int x = 0; x < input.Length - i; i++)
{
if (sb[sb.Length - 1] == '0')
{
sb = sb.Remove((sb.Length - 1), 1);
}
}
}
}
}
Console.WriteLine(input);
Console.WriteLine(sb.ToString());
}
关于c# - 在 C# 中避免数字格式中的额外零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511347/