当我比较从TextView获得的两个double值时

时间:2018-11-18 11:39:59

标签: android

即使条件为true也不起作用,否则块始终在执行。

注意:firstnum变量是一个字符串。

double a =  Double.valueOf(result.getText().toString());
if (Double.parseDouble(firstnum) >  a ) {
        result.setText("First num is greater");
else{
        result.setText("First num is smaller");
}

1 个答案:

答案 0 :(得分:0)

首先,您应该知道Double.valueOf和Double.parseDouble有什么区别:

parseDouble()返回原始双精度值。

valueOf()返回包装类Double的实例。

并与包装类Double的数量进行比较,您应该像这样比较它们:

Double a = 1.33;
Double b = 2.33;
if(a.equals(b)){
    //do something
}

否则,使用==将比较对象指针(a和b的地址)

P.S:它将检查它们是否是相同的对象,而不是相等的值。

现在要解决您的问题,请用以下内容替换第一行:

double a =  Double.parseDouble(result.getText().toString());

,以便当您用a运算符比较firstnum==时,您将比较值而不是地址指针,因为它们是双原始类型并且不是Double包装类< / p>