当我用双打在Java中划分317 219我得到1。
例如:
double b = 317/219;
System.out.println(b);
输出为:1。
这是因为它是一个循环小数? 不得不使用BigDecimal的,而不是它是烦人。
当我用双打在Java中划分317 219我得到1。
例如:
double b = 317/219;
System.out.println(b);
输出为:1。
这是因为它是一个循环小数? 不得不使用BigDecimal的,而不是它是烦人。
试试这个
double b = 317/219D;
在Java编码数的默认类型是int
,这样的代码,你有它的Java正与两家int
数字,然后分工的结果将是int
太,这将截断小数部分给出的最终结果1
。 此int
结果随后从投int 1
到double 1
没有编译器警告,因为它是一个加宽铸造(即一个源类型是保证“适合”到目标类型)。
通过编码或者数字作为double
与后D
(你也可以使用d
,但我总是用大写字母,因为L
为小写l
看起来像1
),该部门的结果将是double
得。
另一种方法...
double b = (double)317/219;
这是因为使用了整数文字,让你做一个整数除法。
尝试写double b = 317.0/219.0;
代替。
值得一提的还有在运行时你的例子没有划分。 二百十九分之三百十七是在编译时计算(整数除法,分数被丢弃),并以恒定的替换。 如果你反编译的.class(我用亚德http://www.kpdus.com/jad.html ),你会看到
double b = 1.0D;
这是int
分。 写:
double b = 317.0/219;
System.out.println(b);
因为你把数字inetgers所以是答案。
得到加倍,你需要要么使用大量浮点运算或投使用整数之一:
double b = 317.0/219;
System.out.println(b);
要么:
double b = ((double)317)/219;
System.out.println(b);
你可以试试
double b = 0.0;
b = 317/219;
这样我可以返回小数点