我有一个使用泰勒级数创建科学计算器的项目。此外,我正在分析一个数字到 ieee 754 标准浮点系统。
在我的计算器中,用户选择他们想要单精度还是双精度:我使用浮点和双精度变量,然后按照 ieee 754 规范分析数字。
如果用户想要双精度,则分析如下:
double analyze=3.45
BigDecimal bd=new BigDecimal(analyze)
这给了我
3.45000000000000017763568394002504646778106689453125
这个数字是以二进制格式存储在电脑内存中的实际数字吗?
如果不是,我可以得到所存储数字的真实值吗?
还有为什么会这样?
double analyze=0.5
BigDecimal db=new BigBecimal(analyze)
它只打印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