我试图仅提取数字中的小数位数(例如4.375变为0.375)。为此,我编写了这段代码,除了最后一个浮点数之外,它主要按预期工作。
float[] actualSizes = {4.375f, 4.375f, 6.5625f, 8.75f, 10.93f};
float decimalDigits;
for (int i = 0; i < actualSizes.length; i++)
{
decimalDigits = actualSizes[i] - (int)(actualSizes[i]);
System.out.println(decimalDigits);
}
这是输出,我预计最后一行是0.93:
0.375
0.375
0.5625
0.75
0.9300003
我尝试过使用double,结果再次不是预期的结果。我认为问题可能与问题Is floating point math broken?中描述的问题类似(问题是Javascript,而我使用的是Java)。
有没有办法在我的程序中绕过这个并获得0.93?