系统粉 > 电脑问答 > 其他问答

已解决基本数据的转换与输出的问题(Java)

提问者:送你一车舅舅  |  浏览次  |  提问时间:2017-03-23  |  回答数量:6

基本数据的转换与输出的问题(Java) 程序:public class E{public static void main (String args[]) {int c=2200;long d=8000;float f;double g=123456789.123456789;c=(int)d;f=(float)g;//导致精度的缺失System.out.print(\"c= \"+c);System.out.println(\"d= \"+d);System.out.println(\"f= \"+f);System.out.println(\"g= \"+g);}}程序运行的结果是:c= 8000d= 8000 f= 1.23456792E8 g= 1.2345678912345679E8我的问题: 1. 为什么第6行是“print”而不是“println” 2.1.23456792E8和1.2345678912345679E8分别是什么意思? 3. f和g的值为什么是1.23456792E8和1.2345678912345679E8而不是123456789.123456789和123456789.123456789

已有6条答案
嘣嘣嘣叭叭叭

嘣嘣嘣叭叭叭

回答数:29  |  被采纳数:146

1、
print打印结果
println 打印结果并换行

2、保留小数位数不同

3、
2种结果一样写法不同而已
2017-03-24 00:53:46
赞 2
包子粽子糯米团

包子粽子糯米团

回答数:119  |  被采纳数:95

解答:

1)
print 直接在当前光标处打印结果集
println 先把当前光标换行后再打印结果集

2)
由于float类型和double类型精度不一样,因此会自动保留最大精度的范围值而舍去范围以外的值,因此输出的结果小数的为数就不一样

3)
1.23456792E8和1.2345678912345679E8 这些类型是科学技术法的表达,可以把E看成是log(10)值 意思就是1.23456792E8 = 1.23456792 * 10的8次方的意思,java虚拟机默认的时候是按科学技术法输出的,因此这些数据都是一个含义一样的意思!如果想自由输出 可以自己定义输出格式!
2017-03-24 00:13:58
赞 11
安之若素了谁

安之若素了谁

回答数:144  |  被采纳数:57

楼上的两位,我的第三问还有点问题:你们说1.23456792E8和123456789.123456789是一个意思,但这两个表示方法好像有差异,123456789.123456789就算按科学技术法来表示也应该是1.23456789E8,为什么它输出的是1.23456792E8?(有两个数字不同)
2017-03-24 04:19:15
赞 14
骚年来杯特仑苏

骚年来杯特仑苏

回答数:138  |  被采纳数:143

转换的时候 导致精度误差 最后位 数据溢出!
2017-03-24 06:09:02
赞 13
章鱼2丫

章鱼2丫

回答数:151  |  被采纳数:35

数据溢出就导致两个数不同?这个差异好大!
2017-03-24 10:33:22
赞 15
tm_death

tm_death

回答数:68  |  被采纳数:79



定义的类型不一样,所开辟的内存空间就不一样,
有的空间大装的数据精确!
有的空间小装的数据会把多出来的数据溢出!
2017-03-24 08:32:54
赞 6
相关问答
最新其他问答
解决方法