永发信息网

public static void main(String[] arg){ System.out.println(5*3.14*2); }

答案:2  悬赏:20  手机版
解决时间 2021-01-19 10:28
  • 提问者网友:趣果有间
  • 2021-01-19 01:05
public static void main(String[] arg){ System.out.println(5*3.14*2); }
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-01-19 02:28
因为二进制不能表示浮点数。浮点数在计算机中按照IEEE754的规范进行的,你可以看看规范。计算机表示的浮点数的范围是:±1.7976931348623157 x 10^308和 ±5 x 10^-324之间。也就是说你写:
double x = 0;
其实存储在x中的数字并不是0,而是5x10^-324这个数,这个数已经和0很接近了,但是不是绝对的0。这个是任何语言都会有的问题,因为现在目前绝大多数编程语言对于浮点数采用的都是IEEE754规范。也就是说C语言,JavaScript等等计算你上面的例子和Java计算的结果一样。
所以浮点数在计算机中本身就是具有误差的,这个没办法的。只能根据你的实际编程需求来决定对误差是进行处理还是不进行处理。
全部回答
  • 1楼网友:执傲
  • 2021-01-19 04:04
java中的数值运算由一个自动升值的问题
5 和 2 为int型
而3.14默认为double型 运算后你没有定义结果的类型 jvm会自动的 将结果变为double型
所以就变成了你所得到的结果
至于后面的那个2 是因为二进制不能表示浮点数。浮点数在计算机中按照IEEE754的规范进行的,你可以看看规范。计算机表示的浮点数的范围是:±1.7976931348623157 x 10^308和 ±5 x 10^-324之间。这本来就不是一个精确的表示,不过这么小的误差在常规编程中是允许的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯