您应该找到结果数的最大公约数,然后除以分子和分母。
这是一种实现方法:
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)); }}


