Cim*_*ian 1 c# casting type-conversion pow
我试图让一个Math.Pow转换为float类型,但是VS2013告诉我"我不能隐式地将类型'double'转换为'float'.
我以为我在做演员如下:
private void COMBO_AWG_SelectedIndexChanged(object sender, EventArgs e)
{
float d = 0.0f;
int awg = int.Parse(COMBO_AWG.Text);
//MessageBox.Show(awg.ToString());
d = 0.127 * (92 * ((float)Math.Pow(36, awg) / 39));
TB_awg2mm.Text = d.ToString();
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
您将其强制转换为float,但是您将该结果与 a 相乘double,从而得到 a double。
任何不是整数且没有后缀f或被F视为 a 的文字double。
要解决此问题:
d = 0.127F * (92 * ((float)Math.Pow(36, awg) / 39));
Run Code Online (Sandbox Code Playgroud)
注意F之后0.127。
你的演员一直float工作,直到你多了0.127,这是一个double价值.int将隐式转换所有值float以进行计算.带有double值的最终乘法使整个表达式成为类型double.
CPU在内部使用所有浮动数学运算double,因此float如果您需要进行转换,则在计算的前面步骤中使用是没有意义的.一直使用double值(为了获得最佳精度),并投射最终结果:
d = (float)(0.127 * (92.0 * (Math.Pow(36.0, awg) / 39.0)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4500 次 |
| 最近记录: |