Java String型数字比较问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java String型数字比较问题相关的知识,希望对你有一定的参考价值。
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
/*
* 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");
虽然阁下结果正确图文并茂,但是时间上差了一些,所以就不采纳了,仍然很感谢你的回答
参考技术A 可以使用 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. 参考技术B 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)比较值,==还是比较引用。 参考技术C 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)));
本回答被提问者采纳
以上是关于Java String型数字比较问题的主要内容,如果未能解决你的问题,请参考以下文章
Java中 两个double型数字相乘的问题,想不明白是怎么回事