Java String型数字比较问题

Strings1="4";Strings2="4.0";用double型Double.valueOf(s1)==Double.valueOf(s2)为什么为false?用... String s1 = "4";
String s2 = "4.0";
用double型Double.valueOf(s1) == Double.valueOf(s2)为什么为false?
用什么方法比较s1和s2比较好?
ps:环境为myeclipse。
这样比貌似存在精度问题,如果用Double.valueOf(s1) - Double.valueOf(s2)的方法判断的话结果却不等于0
展开
 我来答
chujiangke001
推荐于2017-09-05 · TA获得超过1605个赞
知道小有建树答主
回答量:1352
采纳率:0%
帮助的人:701万
展开全部

/*

 * To change this template, choose Tools | Templates

 * and open the template in the editor.

 */

package debug_java;


/**

 *

 * @author chujiangke

 */

public class Debug_java {


    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

        // TODO code application logic here 

String s1 = "4";

String s2 = "4.0";

if(Double.valueOf(s1).equals( Double.valueOf(s2)))

    System.out.printf("there are equel");

else 

    System.out.printf("there are not equel");

        

    }

}


追问
虽然阁下结果正确图文并茂,但是时间上差了一些,所以就不采纳了,仍然很感谢你的回答
xuhaobooo
2013-07-15 · TA获得超过282个赞
知道小有建树答主
回答量:103
采纳率:0%
帮助的人:73万
展开全部
可以使用 Double.equals(Double)方法,Double.valueOf(s1).equas(Double.valueOf(s2))的结果是true.
如果比较大小,使用Double.compareTo(Double)方法,Double.valueOf(s1).compareTo(Double.valueOf(s2)),如果s1大,结果为1。如果S2大,结果为-1。如果相等,结果为0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lkstarsea
2013-07-15 · TA获得超过315个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:189万
展开全部
Double.valueOf(s1) 和 Double.valueOf(s2)的返回类型是Double的实例,也就是基本数据类型double的包装类的引用,==比较两个不同引用返回肯定是false。
你可以试试
double d1 = Double.valueOf(s1) ;
double d2 = Double.valueOf(s2);
System.out.println(d1==d2);这就是true了,比较的是值,不关精度的事。
比较s1和s2用s1.equals(s2)比较值,==还是比较引用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zw1502071
推荐于2017-09-14 · 超过19用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:42.5万
展开全部
1、不能使用“==”,要使用equals
2、结果判断是0可以的,不知道为啥你的不相等

public class test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "4";
String s2 = "4.0";
//第一种方式,采用与0.0比较
if((Double.valueOf(s1)-Double.valueOf(s2)) == 0) {
System.out.println("equal");
}
//第二种方式,采用equals方法
System.out.println(Double.valueOf(s1).equals(Double.valueOf(s2)));
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式