将小数更改为整数(不舍入)

时间:2014-10-30 17:50:18

标签: java

所以我正在制作一个可以解决经验公式问题的应用程序,我需要一些代码可以做类似的事情: 如果数字是2.5,1,3,则应将它们更改为2.5 * 2 = 5,1 * 2 = 2,3 * 2 = 6,以便将带小数的数字转换为整数,并适当调整其他数字

我想到了这个逻辑:

for(n = 1; (Math.round(simplestRat[0]) * n) != (int)SimplestRat[0]; n++)

增加一个计数器,该计数器将乘以一个整数来做我想要的但是我甚至在这个阶段对这个代码持怀疑态度,并且不认为它会起作用。

如果有人可以为此建议代码或改进此代码,或者甚至给我链接到此问题的其他帖子,这将是很多帮助,因为我无法找到有关此类问题的任何内容。

感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:1)

好的,所以你必须要做几步。首先,将它们全部变为整数。最简单的方法是找到一个合适的10的幂来将它们全部乘以它们作为整数。这是一个有用的检查:How to test if a double is an integer

然后将它们转换成整数,并开始研究它们寻找共同的素因子。这将是一个类似于Eratosthenes'筛分(http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)但最后有分区。对于每个素数,查看所有3个数字是否完全除以(模数为素数== 0)。如果他们这样做,则将素数除以并重置为2.如果他们没有,则下一个素数。

这应该为您提供数字之间的最低公共比率。来自原始阶段的任何额外乘数都会被公共素数方法削减。