所以我想做的是将双精度数转换为有理数。我检查小数点后有多少位数,例如,我想将数字 123.456 保存为 123456 / 1000。
public Rational(double d){
String s = String.valueOf(d);
int digitsDec = s.length() - 1 - s.indexOf('.');
for(int i = 0; i < digitsDec; i++){
d *= 10;
}
System.out.println((int)d); //checking purposes
}
但是,对于数字 123.456,我得到一个舍入错误,结果是 123455。我想可以用 BigDecimal 解决这个问题,但我无法让它工作。另外,在计算了有理数之后,我想用参数(int numerator, int denominator)调用另一个构造函数,但我显然不能在 println 现在所在的行中调用构造函数。我该怎么做?