标题:java pow
只看楼主
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
结帖率:100%
已结贴  问题点数:10 回复次数:8 
java pow
最近调用了一个函数math.pow,不过出了些小问题,一直没找到,望指点。
package zy;
import java.lang.Math;
public class Shuixian
{
   public static void main(String args[])
  {
   int a,b,c,n,j,i=1;
   for(n=100;n<=999;n++)
   {
     a=n/100;
     b=(n-i*100)/10;
     c=n%10;
     j=Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3);
     while(n==j)     
     {  
      System.out.println("输出第"+i+"个水仙花:"+n);
      i++;
     }
    }
   System.exit(0);   
   }
}
调用结果:
D:\>javac zy\Shuixian.java
zy\Shuixian.java:13: 可能损失精度
找到: double
需要: int
     j=Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3);
                                  ^
1 错误
搜索更多相关主题的帖子: java pow 
2010-03-21 09:56
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
得分:7 
基本数据类型的转换,当把级别低的值赋值给级别高的变量时,系统自动完成数据类型的转换;
当把级别个高的数值赋值给级别低的变量时,必须使用显示转换,格式:(类型名)要转换的值;

此题中变量j是int型变量,而Math类下的pow(double a,double b)返回值类型为double级别比int高,符合上面的第二种情况,所以要进行强制转换:
j=(int)(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3));
或者把j声明为double型变量即可。


本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2010-03-21 15:17
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
得分:0 
回复 2楼 dadongzicool
还是得请教一下,pow(double a,double b)的返回值为double,这个我可以理解,但是不太明白的是pow(double a,double b)里的参数类型为double型,我输入int型的参数是不是直接转换为double型的。

我相信每个人都是独立的存在,了解并相信自己才是对自己负责任!
2010-03-21 18:49
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:0 
回复 3楼 hanxingxing
是的

★★★★★为人民服务★★★★★
2010-03-21 18:54
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
得分:0 
以下是引用hanxingxing在2010-3-21 18:49:57的发言:

还是得请教一下,pow(double a,double b)的返回值为double,这个我可以理解,但是不太明白的是pow(double a,double b)里的参数类型为double型,我输入int型的参数是不是直接转换为double型的。
当级别低的变量的值赋值给级别高的变量时,系统自动完成转换,反之要强制转换,此时有可能造成精度的损失。

本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2010-03-21 22:15
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
得分:0 
回复 5楼 dadongzicool
谢谢版主!弱弱的问一句,你每天都在线吗??

我相信每个人都是独立的存在,了解并相信自己才是对自己负责任!
2010-03-22 00:00
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
得分:0 
以下是引用hanxingxing在2010-3-22 00:00:04的发言:

谢谢版主!弱弱的问一句,你每天都在线吗??
哈 每天都在线的

本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2010-03-22 01:03
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
得分:3 
package zy;
import java.lang.Math;
public class Shuixian
{
   public static void main(String args[])
  {
   int a,b,c,n,j,i=1;
   for(n=100;n<=999;n++)
   {
     a=n/100;
     b=(n-i*100)/10;
     c=n%10;
     j=(int)(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3));
     if(n==j) //while会是死循环,必须改成if     
     {  
      System.out.println("输出第"+i+"个水仙花:"+n);
      i++;
     }
    }
   System.exit(0);   
   }
}


[ 本帖最后由 lampeter123 于 2010-3-22 08:33 编辑 ]

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-03-22 08:31
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
得分:0 
回复 8楼 lampeter123
谢了,您看的真细,说明你对我的程序用心看了,再次感谢你的指导。

我相信每个人都是独立的存在,了解并相信自己才是对自己负责任!
2010-03-22 17:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-300060-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.850362 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved