如何将小数转换为分数?

我需要将小数转换为分数。转换成10英尺很容易。

1.5 => 15/10

这可以通过以下代码完成:

public class Rational {

private int num, denom;

public Rational(double d) {

String s = String.valueOf(d);

int digitsDec = s.length() - 1 - s.indexOf('.');

int denom = 1;

for (int i = 0; i < digitsDec; i++) {

d *= 10;

denom *= 10;

}

int num = (int) Math.round(d);

this.num = num;

this.denom = denom;

}

public Rational(int num, int denom) {

this.num = num;

this.denom = denom;

}

public String toString() {

return String.valueOf(num) + "/" + String.valueOf(denom);

}

public static void main(String[] args) {

System.out.println(new Rational(1.5));

}

}

但是我想要的是

1.5 => 3/2

而且我不知道如何进行。我的问题不是重复。因为其他相关问题是C#。这是java。

回答:

您应该找到结果数的最大公约数,然后除以分子和分母。

这是一种实现方法:

public class Rational {

private int num, denom;

public Rational(double d) {

String s = String.valueOf(d);

int digitsDec = s.length() - 1 - s.indexOf('.');

int denom = 1;

for (int i = 0; i < digitsDec; i++) {

d *= 10;

denom *= 10;

}

int num = (int) Math.round(d);

int g = gcd(num, denom);

this.num = num / g;

this.denom = denom /g;

}

public Rational(int num, int denom) {

this.num = num;

this.denom = denom;

}

public String toString() {

return String.valueOf(num) + "/" + String.valueOf(denom);

}

public static int gcd(int num, int denom) {

....

}

public static void main(String[] args) {

System.out.println(new Rational(1.5));

}

}

以上是 如何将小数转换为分数? 的全部内容, 来源链接: utcz.com/qa/401191.html

回到顶部