下面这段代码是我老婆前两天刚学JAVA的时候写的一个小练习,题目是:编写一个控制台程序:声明一个double类型的变量并将其初始值化为1234.5678。然后取出这个值的整数部分,把他储存在一个类型为long的变量中;再取出小数部分的前面四位,把它储存在一个类型为short的整形变量中。
public class ChoseDouble {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double a = 1234.5678;
int b = 0;
short c = 0;
b = (int)(a/1);
c = (short)((a-b)*10000);
System.out.println("B is " + b + " and C is " + c );
}
}
这段代码能实现题目所要求的,但是问题出在,如果把a取其他值的时候,比如a=4567.5678,返回的值却是b=4567,c=5677。
请各位达人解答为什么会出现这样的问题。