相关疑难解决方法(0)

漂浮和双重混乱

在看到下面的代码片段的结果后,我对浮点数的行为感到困惑.

    float var1 = 5.4f;
    float var2 = 5.5f;

    if(var1 == 5.4)
        System.out.println("Matched");
    else
        System.out.println("Oops!!");

    if(var2 == 5.5)
        System.out.println("Matched");
    else
        System.out.println("Oops!!");
Run Code Online (Sandbox Code Playgroud)

输出:

Oops!!
Matched
Run Code Online (Sandbox Code Playgroud)

这是因为十进制数不能完全代表基本2二进制格式吗?或者这是因为我将float类型变量与double类型进行比较时的精度?如果是,那为什么它适用于下一个变量?

java type-conversion

9
推荐指数
2
解决办法
1089
查看次数

在Java中直接比较2 float/double是否安全?

如果我使用这样的比较是安全的(a是int,b和c是float/double):

a == b
b == c
Run Code Online (Sandbox Code Playgroud)

它可能听起来很荒谬,但在我的旧编程语言中,有时1 + 2 == 3是假的(因为左侧返回2.99999999999 ......).那么,这个:

Math.sqrt(b) == Math.sqrt(c)
b / 3 == 10 / 3 //In case b = 10, does it return true?
Run Code Online (Sandbox Code Playgroud)

java android

4
推荐指数
2
解决办法
7973
查看次数

在java中浮动生成意外输出

我正在编写一个带浮动的示例程序,但突然发生了一些奇怪的事情.我真的很感激,如果有人能够阐明我为什么要从我的计划中面对这样的行为.

package Programs;

public class FloatTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        float f1 = (float) 3.2;
        float f2 = (float) 6.5;
        if (f1 == 3.2) {
            System.out.println(f1 + " same");
        } else {
            System.out.println(f1 + " different");
        }
        if (f2 == 6.5) {
            System.out.println(f2 + " same");
        } else {
            System.out.println(f2 + " different");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

3.2 different
6.5 same
Run Code Online (Sandbox Code Playgroud)

在做了一些改变f2值的测试后,我注意到f2> 3.5得到意想不到的结果为什么会这样?任何输入都非常感谢.

谢谢

java

2
推荐指数
1
解决办法
189
查看次数

双重和浮动值比较

我刚刚经历了一个比较两个数字的bug,我发现以下内容很有趣:

    assert 1 == 1;//true        
    assert 1d == 1;//true        
    assert 1 == 1f;//true        
    assert 1d == 1f;//true
    assert 1.1 == 1.1;//true        
    assert 1.1d == 1.1;//true        
    assert 1.1 == 1.1f;//false        
    assert 1.1d == 1.1f;//false
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么只有最后两个陈述是假的?

java

0
推荐指数
1
解决办法
173
查看次数

标签 统计

java ×4

android ×1

type-conversion ×1