Tag: 分数

C中的埃及分数

古埃及人只使用1/nforms的分数,因此任何其他分数必须表示为这些单位分数的总和,而且,所有单位分数都不同! 在C或java中使任何分数成为埃及分数(越少越好)的好方法是什么,可以使用什么算法,分支和绑定,a *? 例如: 3/4 = 1/2 + 1/4 6/7 = 1/2 + 1/3 + 1/42

如何将浮点数转换为由字节分子和分母表示的最接近的分数?

如何编写一个给定浮点数的算法,并尝试使用分子和分母尽可能准确地表示,两者都限制在Java字节的范围内? 这样做的原因是I2C设备需要分子和分母,而给它一个浮点数是有意义的。 例如, 3.1415926535…将导致245/78 ,而不是314/100或22/7 。 在效率方面,这将在程序开始时调用三次,但之后根本不会。 所以慢速算法也不算太糟糕。

在Java中加倍分数

所以我要做的是将double转换为有理数。 我检查小数点后有多少位数,我想将数字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所在的行中调用构造函数。 我该怎么做?