Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文本框在乘以双变量时不显示真实结果_C# - Fatal编程技术网

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);