所以我知道我的计算可能很大。但是,当我尝试计算与其相邻的文本框的输入立方体时,它不会显示数字,但会显示字符串“exp:”。
这种连接不起作用吗?相反,如果它太大,它只显示“EXP:”。
另外,我尝试了反过来但它会显示数字(即使它很大)但不显示“exp”。
for (int i = 0; i < textBoxes.Length; i++)
{
totalExp += Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1;
labels[i].Text = "Exp: " + (Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1).ToString("#,###.#####");
}
文本框属性是在我的上一个问题(https://stackoverflow.com/a/20406828/2804613)
上设置的我对标签做了完全相同的事情,因此它们位于文本框的右侧。
答案 0 :(得分:2)
我尝试使用以下代码重现您的问题:
double thisExp = Math.Pow(Convert.ToDouble("1.37"), 3.0) + 1;
// totalExp += thisExp;
string Text = "Exp: " + thisExp.ToString("#,###.#####");
Console.WriteLine(Text);
打印
Exp:3.57135
您可以尝试here
因此,这不是格式化问题。我怀疑从字符串转换为double,但我们需要更多信息。 特别是区域设置和确切的字符串内容。
第二个想法:你能读回标签文字吗?如果您为文本设置的标签尺寸太窄,则可能只显示前几个字符。
答案 1 :(得分:1)
解释我的评论:
for (int i = 0; i < textBoxes.Length; i++)
{
var exp = Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1;
totalExp += exp;
labels[i].Text = "Exp: " + exp.ToString("#,###.#####");
}
更好的方法是使用String.Format()
for (int i = 0; i < textBoxes.Length; i++)
{
var exp = Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1;
totalExp += exp;
labels[i].Text = String.Format("Exp: {0:#,###.#####}", exp);
}
并确保将标签的AutoSize
属性设置为True
。