我是这个网站的新手,C#,
我在浮动时得到了关于点和逗号的问题。
dpi.Text = "1188";
winSens.Text = "1";
sens.Text = "1.25";
m_yaw.Text = "0.022";
double sensCM =(360 * 2.54) / ((Double.Parse(dpi.Text) * Double.Parse(winSens.Text) * Double.Parse(sens.Text) * Double.Parse(m_yaw.Text)));
sensCM360.Text = sensCM.ToString();
所以计算就像;
(360 * 2.54) / (1188 * 1 * 1.25 * 0.022)=
=914.4 / 32.67
=27.9889
但是我得到0,000279889807162534而不是27.9889。
如果,我逐个添加“替换”,它们就像Double.Parse(dpi.Text.Replace(".", ","))
但是我不明白为什么它与''一起工作',我记得,我们使用'。'在计算中,我在代码中输入了2.54。那么有人可以解释一下吗?
答案 0 :(得分:5)
我也得到0.00027988980716253442
。这是因为德国的小数分隔符,
(以及其他国家/地区)。在美国(和其他国家/地区),.
。
如果您想将点强制为decimal separator,可以使用与CultureInfo.InvariantCulture
类似的en-US
:
double sensVal = double.Parse(sens.Text, CultureInfo.InvariantCulture);
// ...
这导致1.25
而不是125.0
。
答案 1 :(得分:0)
如果您在应用中进行了大量解析,请尝试更改线程的文化:
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
dpi.Text = "1188";
winSens.Text = "1";
sens.Text = "1.25";
m_yaw.Text = "0.022";
double sensCM =(360 * 2.54) / ((Double.Parse(dpi.Text) * Double.Parse(winSens.Text) * Double.Parse(sens.Text) * Double.Parse(m_yaw.Text)));
sensCM360.Text = sensCM.ToString();
或者只是将文化传递给double.Parse()
dpi.Text = "1188";
winSens.Text = "1";
sens.Text = "1.25";
m_yaw.Text = "0.022";
double sensCM =(360 * 2.54) / ((Double.Parse(dpi.Text,CultureInfo.InvariantCulture) * Double.Parse(winSens.Text,CultureInfo.InvariantCulture) * Double.Parse(sens.Text,CultureInfo.InvariantCulture) * Double.Parse(m_yaw.Text)));
sensCM360.Text = sensCM.ToString();