相关疑难解决方法(0)

为什么不使用Double或Float来表示货币?

我总是被告知永远不要代表钱doublefloat类型,这次我向你提出问题:为什么?

我确信有一个很好的理由,我根本不知道它是什么.

floating-point currency

887
推荐指数
11
解决办法
27万
查看次数

java程序输出的说明

我遇到了以下程序

class Boolean {  
  public static void main(String argv[]) {  
    boolean x;  
    x = 4.4f == 4.4;  
    System.out.println(x);  
  }  
} 
Run Code Online (Sandbox Code Playgroud)

以下程序的输出是 false

但是,如果我们以下列方式编写程序,那么

class Boolean {  
    public static void main(String argv[]) {  
      boolean x;  
      x = 4.5f == 4.5;  
      System.out.println(x);  
    }  
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下输出是 true

有人可以解释一下为什么吗?

java boolean

5
推荐指数
1
解决办法
1071
查看次数

比较Java中的浮点数

可能重复:
在java中操作和比较浮点数

我是否应该在比较Java中的浮点数时使用Epsilon?Float.compare(float f1,float f2)静态方法是否可以安全使用?

谢谢 !

编辑:我想我明白了.

当我写,比如说,在日食中3.6f,编译器将这个数字解释为3.6.但是,当我写1.2f*3.0f时,结果是3.6000001.虽然在数学上这是错误的,但这两个结果显然是不公平的.因此,在检查相等性时需要有一个epsilon.

但是,当我在eclipse中写入0.0f时,编译器严格地将其解释为0,因为IEEE 754能够正确处理它.因此,确保浮动是严格正的(值> 0.0f)是正确的.

我看到的唯一问题是当计算机不使用IEEE 754表示时,而是使用不能正确处理0的表示.

我对吗 ?

java floating-point

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

Java数字格式困境

我遇到了这个代码的问题!我试图在java中运行代码,但答案似乎很奇怪.

float a=0.1F;
float b=0.2F;
if((a+b)==0.3){
System.out.println("True");
}
else{
System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)

答案是:错误但理论上应该返回True.如果我们使用a和b的值,如0.15和0.15或0.05和0.25,则函数返回True.我很迷惑.我读过像Java/JavaScript这样的语言实现IEEE-754数字格式的地方!如果是这样,那么这种格式是什么以及代码有什么问题?反正有没有改变数字格式?

java

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

hibernate无法将ID指定为double

我尝试使用此xml为具有双数据类型的hibernate分配ID

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping >
        <class name="User" table="user">
            <id name="id" type="double"  >
                <column name="id_user" />
                <generator class="increment"  />
            </id>
            <property name="username" />
            <property name="password" />
            <property name="email" />

       </class>
    </hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

但它给了我错误

org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.Double
    at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:210) at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:210)
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?或者它是一个Hibernate错误还是什么?

java hibernate id-generation

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

有人可以解释一下,在java中为什么0.6 <0.6f但是0.7is> = 0.7f

有人可以在java中解释我为什么

     if(0.6 <= 0.6f ) System.out.printf("true");
     else System.out.printf("false");
Run Code Online (Sandbox Code Playgroud)

这个PRINTS是真的但是

    if(0.7 <= 0.7f ) System.out.printf("true");
    else  System.out.printf("false");
Run Code Online (Sandbox Code Playgroud)

这个PRINTS是假的

当浮点数转换为双倍进行比较时,它是否与IEEE 754标准有关?

有人可以详细解释它的确切工作吗?

java

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

Java浮点数和双打数相等

我正在调试我的程序,其中某些双打和浮动不相等.我在此之前已经找到了答案,为什么会发生这种情况但却找不到相关信息.例如:

System.out.println(4.4f == 4.4); 
Run Code Online (Sandbox Code Playgroud)

这打印错误,

System.out.println(4.5f == 4.5);
Run Code Online (Sandbox Code Playgroud)

打印真实.

有人可以解释为什么JAVA会出现这种情况吗?

java floating-point double

-1
推荐指数
1
解决办法
246
查看次数