我有一个表格,上面有三个标签,当鼠标移动时,其值会发生变化。两个工作,第三个没有。这是我的MouseMove代码:
double latitude = Math.Round(Math.Acos(latRadius / maxRadius) * (180.0/Math.PI), 2);
label1.Text = x.ToString() + "," + y.ToString();
label2.Text = latRadius.ToString() + "," + maxRadius.ToString();
label3.Text = Convert.ToString(latitude);
前两个标签正确更新,第三个标签继续说'90'。有什么问题? 感谢
答案 0 :(得分:5)
尝试:
double latitude =
Math.Acos(latRadius * 1d / maxRadius) * (180.0/Math.PI);
label3.Text = latitude.ToString("0.00");
已编辑以回答用户评论:
你的问题是你在latRadius
和maxRadius
使用整数(我认为);因此,当您的应用评估(latRadius / maxRadius)
时,它使用整数除法,并且因为latRadius小于maxRadius,所以它始终为零!
这就是你没有看到任何更新的原因
现在,使用(latRadius * 1d / maxRadius)
强制编译器使用实数除法(*1d
表示乘以双数1)并完成作业。
更多强>:
如果您打算在其他公式中使用它,请不要在纬度上使用Math.Round
使用latitude.ToString("0.00")
两位小数显示它。