Java 如何将中的十进制值转换为分数值?

Java 如何将中的十进制值转换为分数值?,java,Java,例外输出:1/4,1/2,3/4,1,5/4,3/2 但是我的输出是十进制的。请帮助如何仅以分数形式打印 import java.util.*; 公共课你好{ 公共静态void main(字符串[]args){ //你的代码在这里 扫描仪s=新的扫描仪(System.in); int n=s.nextInt(); 双d=1/4.0,和=0; for(int i=0;i编写了一个方法,可以将双精度数字转换为分数。使用此方法将其转换并打印如下: import java.util.Scanner;

例外输出:1/4,1/2,3/4,1,5/4,3/2 但是我的输出是十进制的。请帮助如何仅以分数形式打印

import java.util.*;
公共课你好{
公共静态void main(字符串[]args){
//你的代码在这里
扫描仪s=新的扫描仪(System.in);
int n=s.nextInt();
双d=1/4.0,和=0;

for(int i=0;i编写了一个方法,可以将双精度数字转换为分数。使用此方法将其转换并打印如下:

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        double d=1/4.0,sum=0;
        for(int i=0;i<n;i++) {
            sum+=d;
            System.out.print(toFraction(sum)+" ");
        }

    }

    static String toFraction(double x) {
        int w = (int) x;
        int n = (int) (x * 64) % 64;
        int a = n & -n;
        return n == 0 ? w+"" : (w * (64 / a) + (n / a)) + "/" + 64 / a;
    }
}
import java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
int n=s.nextInt();
双d=1/4.0,和=0;

对于(inti=0;i以字符串的形式进行输入,因此它将以所需的格式进行输入,并将其拆分为“/”即someString.spit(“/”)。 之后,将一个作为循环,取两个数字,并将其存储在两个不同的变量中。
然后对两者进行除法,并使用“/”打印介于两者之间。

1/4.0
计算为
0.25
。这只是一个表达式。分数是否总是1/4的倍数?如果是这样,将大大简化事情,但基本上你必须分别存储分子和分母,并一起打印。如果你真的需要将小数转换回分数,看看这里的答案最初我的值是1/4每次循环执行前,我想在总和上加1/4。请检查是否存在问题:@Satyanarayanaredytadi您是否得到了解决方案?它没有打印我提到的上述输出。先生,您能帮我吗me@SatyanarayanareddyTadi我少了一个角色,我有e编辑了代码,请立即检查
import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        double d=1/4.0,sum=0;
        for(int i=0;i<n;i++) {
            sum+=d;
            System.out.print(toFraction(sum)+" ");
        }

    }

    static String toFraction(double x) {
        int w = (int) x;
        int n = (int) (x * 64) % 64;
        int a = n & -n;
        return n == 0 ? w+"" : (w * (64 / a) + (n / a)) + "/" + 64 / a;
    }
}
public class NewClass {

    public static void main(String[] args) {
        System.out.println(convertype(0.75));
    }
    public static String convertype(double decimal){
      int digitsAfterPoint = String.valueOf(decimal).length() - String.valueOf(decimal).indexOf('.')+1; // get the count of digits after the point // for example 0.75 has two digits
      BigInteger numerator  = BigInteger.valueOf((long)(decimal*Math.pow(10, digitsAfterPoint))); // multiply 0.75 with 10^2 to get 75
      BigInteger denominator = BigInteger.valueOf((long)(Math.pow(10, digitsAfterPoint)));       // 10^2 is your denominator
      int gcd = numerator.gcd(denominator).intValue();                                           // calculate the greatest common divisor of numerator  and denominator
      if (gcd > 1 ){                                                                             // gcd(75,100) = 25
        return String.valueOf(numerator.intValue()/gcd) +" / "  + String.valueOf(denominator.intValue()/gcd);  // return 75/25 / 100/25 = 3/4
      }
      else{
        return String.valueOf(numerator) +" / "  + String.valueOf(denominator);              // if gcd = 1 which means nothing to simplify just return numerator / denominator  
      }      
    }
}