我有一个带双参数的构造函数,需要保留6个十进制数。要将数字转换为(分子,分母)格式,它会将数字传递给另一个接受长参数的函数。
// A double value (6 decimal will be used)
public DoubleToLong(double d)
{
System.out.println("Double is " + d); // Double is 9.2233720368547E13
convert((long) (d * 1000000), 1000000);
}
public void convert(long num, long den)
{
System.out.println("Numerator: " + num + " Denominator: " + den); // Numerator: 9223372036854775807 Denominator: 1000000
}
当9223372036854L传递给构造函数时, 分子:9223372036853999616分母:1000000 - > (OK)
当92233720368547L传递给构造函数时, 分子:9223372036854775807分母:1000000 - > (NOK)
与1000000相乘时发生溢出。如何修改构造函数以使用所有长值。