首页  > 学历解惑  > java如何表示分数

java如何表示分数

2025-05-09 01:40:03
求职指导郭老师
求职指导郭老师已认证

求职指导郭老师为您分享以下优质知识

在Java中,表示分数主要有以下两种方式:

一、使用基本数据类型(推荐用于简单场景)

浮点数表示

直接使用`double`类型存储分数值,例如`double score = 98.5;`,适合需要小数精度的情况。

二、使用自定义类(推荐用于精确计算)

Fraction类设计

- 属性:

分子(`num`)和分母(`den`)均为`int`类型。

- 构造函数:`Fraction(int a, int b)`用于创建分数对象。

- 核心方法

- `doublevalue()`:将分数转换为`double`类型。

- `plus(Fraction r)`:实现分数加法。

- `multiply(Fraction r)`:实现分数乘法。

- `print()`:以“分子/分母”形式输出分数。

- 简化功能:通过`gcd`(最大公约数)方法简化分数,例如`num = gcd(num, den); den = den / gcd(num, den);`。

示例代码(基于自定义Fraction类):

```java

import java.util.Scanner;

class Fraction {

int num, den;

public Fraction(int a, int b) {

num = a;

den = b;

simplify();

}

private void simplify() {

int gcd = gcd(Math.abs(num), Math.abs(den));

num /= gcd;

den /= gcd;

if (den < 0) { // 确保分母为正

num = -num;

den = -den;

}

}

private int gcd(int a, int b) {

return b == 0 ? a : gcd(b, a % b);

}

public double toDouble() {

return (double) num / den;

}

public Fraction plus(Fraction r) {

int newNum = num * r.den + r.num * den;

int newDen = den * r.den;

return new Fraction(newNum, newDen);

}

public void print() {

System.out.println(num + "/" + den);

}

}

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

Fraction a = new Fraction(sc.nextInt(), sc.nextInt());

Fraction b = new Fraction(sc.nextInt(), sc.nextInt());

Fraction c = a.plus(b);

c.print(); // 输出结果为简化后的分数

}

}

```

注意事项:

使用`double`类型时需注意精度损失,推荐使用自定义类进行财务等高精度场景计算。- 自定义类中需处理分母为负的情况,确保分数标准化。