C# 文本框在乘以双变量时不显示真实结果
我正在编写一个代码,将取自不同C# 文本框在乘以双变量时不显示真实结果,c#,C#,我正在编写一个代码,将取自不同文本框的两个双变量相乘,并在另一个文本框中显示结果。但我不能得到正确的结果 我的代码是: double mny = Convert.ToDouble(textBoxMny.Text); double winmultiplier = Convert.ToDouble(textBoxwinmultiplier.Text); win1 = mny * winmultiplier; textBox1win.Text = win1.ToString(); 我给出了mny
文本框的两个双变量相乘,并在另一个文本框中显示结果。但我不能得到正确的结果
我的代码是:
double mny = Convert.ToDouble(textBoxMny.Text);
double winmultiplier = Convert.ToDouble(textBoxwinmultiplier.Text);
win1 = mny * winmultiplier;
textBox1win.Text = win1.ToString();
我给出了mny=0.000015
和winmultiplier 5.21
。Textbox正在显示结果的7815
。521*15=7815
,似乎C#省略了分隔符,因此我认为问题在于您的系统双分隔符不是
,请尝试使用,
作为分隔符。还可以尝试使用double.Parse()
方法。使用
win1.ToString(“0.0000000”)
您可以特别尝试文本值。用户可以输入任何好的或坏的值
if(decimal.TryParse(..))
{
// success
}
此外,请尝试将十进制设置为字符串:
String sh = a.ToString("0.0000000");
浮点值(例如,double
)在表示为string
时可以有两种分隔符:十进制1和1000分隔符。
当从字符串转换/解析时,忽略千位saparator:
// notice, that "thousand" sparators not necessary separate thousands
"1,12,4567,8.93" -> 11245678.93d;
小数点分隔符和千分隔符都依赖于区域性;对于在俄罗斯文化中的意义(Ru-Ru
),千位分隔符是
,小数点是,
:
"0.000015" -> 00000015d == 15d
"5.21" -> 521d == 521d
在您的情况下,您可以指定区域性,例如CultureInfo.InvariantCulture
,其中,
是千位分隔符,
是十进制分隔符。另一个建议是在用户输入时使用TryParse
而不是Convert
(如果用户输入的是“bla-bla”
而不是有效值,我们应该做出正确的反应)
Win1的数据类型是什么?您确定它不是7.815E-05
?你调试了你的代码吗?textBox1win.Text=$“{win1:f10}”
和double.Parse
应该可以
using System.Globalization;
...
if (!double.TryParse(textBoxMny.Text,
NumberStyles.Any,
CultureInfo.InvariantCulture,
out double mny))
textBox1win.Text = "Mny is not a vaid floating point value";
else if (!double.TryParse(textBoxMny.Text,
NumberStyles.Any,
CultureInfo.InvariantCulture,
out double winmultiplier))
textBox1win.Text = "winmultiplier is not a vaid floating point value";
else
textBox1win.Text = (mny * winmultiplier).ToString(CultureInfo.InvariantCulture);