问题标题:
C#开三次方我用Math.Pow(8,1/3),结果等于1我再用doublea=8doubleb=1/3Math.Pow(a,b),结果仍然等于1.我用Math.Pow(8,0.333333333333333333),结果等于2.我想问一下,难道C#里面只能用第三种办法开三次方吗?这也
问题描述:
C#开三次方
我用Math.Pow(8,1/3),结果等于1
我再用
doublea=8
doubleb=1/3
Math.Pow(a,b),结果仍然等于1.
我用Math.Pow(8,0.333333333333333333),结果等于2.
我想问一下,难道C#里面只能用第三种办法开三次方吗?这也太那个了吧!
邓良才回答:
首先Pow(doublea,doubleb)的2个参数都得是浮点数,这个你应该清楚了.
doubleb=1/3的计算过程是:
首先计算1/3=0
接下来b= (double)0 ,0隐式转换为double类型,但 b的结果还是0
(就是说先做除法运算,算术运算符的优先级比赋值运算高),
正确的做法是Pow(8,1f/3)
把1或3任意一个变成浮点数后再去做除法运算,这样一来1f/3的结果就不是0,而是0.3333333了
点击显示
数学推荐
热门数学推荐