java - 获取存储的实际数字

标签 java floating-point bigdecimal ieee-754

我有一个使用泰勒级数创建科学计算器的项目。此外,我正在分析 ieee 754 标准浮点系统的数字。

在我的计算器中,用户可以选择他们想要单精度还是 double :我使用 float 和 double 变量, 然后我按照 ieee 754 规范分析数字。

如果用户想要 double ,则分析如下:

double analyze=3.45
BigDecimal bd=new BigDecimal(analyze) 

这给了我

3.45000000000000017763568394002504646778106689453125
  1. 这个数字是不是以二进制格式存储在电脑内存中的实际数字?

  2. 如果不是,我可以通过任何方式获得存储的数字的实际值吗?

  3. 还有为什么会这样?

    double analyze=0.5
    BigDecimal db=new BigBecimal(分析)

它只打印 0.5 - 为什么我丢失了有效数字?

谁能告诉我为什么会这样

        BigDecimal one=new BigDecimal(0.1);
        BigDecimal five=one.multiply(new BigDecimal(5)) ;
        System.out.println("5 times 0.1 is "+" "+ five);

        System.out.println("But the 0.5 in BigDecimal is " + " "+ new BigDecimal(0.5));

通过运行这个你得到 5 倍 0.1 是 0.5000000000000000277555756156289135105907917022705078125 但是BigDecimal中的0.5是0.5

最佳答案

1.i want to ask you is this number is the actual number which is stored in binary format in the pc memory ??

是的。

2.if it isn't is any way i can have the real value of the number that is stored

嗯,是的,所以没问题。

  1. it prints me only -->0.5 why do i loose signifigant digits?

你没有; 0.5 是以二进制格式存储的确切数字。

关于java - 获取存储的实际数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13921951/

相关文章:

python - 使用欧拉方法求解微分方程组

Java BigDecimal 舍入

Java 执行器服务 - 内存不足

java - JSP - javabean 返回 null,但为什么呢?

java - 如何在 java 中使用 java.util.regex 匹配输入中的特定格式?

java - 如何保持 for 循环计数器为 0;大数; ETC

java - 在Kotlin中乘以小数

java - (撒克逊 dtd)java.net.SocketException : Unexpected end of file fromserver

Haskell 浮点精度

java - 什么是与 Math.floorMod() 完全相同但使用 float 而不是整数的方法?