数学问题——分数的四则运算

这篇博客详细介绍了如何用C++结构体表示分数,并实现了分数的化简及四则运算。化简过程包括调整符号、处理零值以及约分。分数的加、减、乘、除操作都通过调用化简函数确保结果是最简形式。博客还提醒在执行除法时要注意除数不能为零,同时关注运算过程中可能出现的溢出问题。
摘要由CSDN通过智能技术生成

1 分数的表示与化简

1.1 分数的表示

struct Fraction{   // 分数
    long long up;  // 分子
    long long down;  // 分母
};

其中规定:

  1. 使用down为非负数。若分数为负,那么令分子up为负即可。
  2. 若该分数恰好为0,那么规定其分子为0,分母为1。
  3. 分子和分母没有除了1以外的公约数。

1.2 分数的化简

化简的目的是使Fraction变量满足分数表示的三项规定,化简的步骤因而分如下三步:

  1. 若分母down为负数,那么令分子up和分母down都变为相反数。
  2. 若分子up为0,那么令分母down为1。
  3. 约分:求出分子绝对值与分母绝对值的最大公约数d,然后令分子分母同时除以d。
Fraction reduction(Fraction result) {
    if(result.down < 0) {
        result.up = -result.up;
        result.down = -result.down;
    }
    if(result.up == 0)
        result.down = 1;
    else {
        long long d = gcd(abs(result.up),abs(result.down));
        result.up /= d;
        result.down /= d;
    }
    return result;
}

2 分数的四则运算

2.1 分数的加法

Fraction add(Fraction f1,Fraction f2) {
    Fraction result;
    result.up = f1.up*f2.down + f2.up*f1.down;
    result.down = f1.down*f2.down;
    return reduction(result);
}

2.2 分数的减法

Fraction sub(Fraction f1,Fraction f2) {
    Fraction result;
    result.up = f1.up*f2.down - f2.up*f1.down;
    result.down = f1.down*f2.down;
    return reduction(result);
}

2.3 分数的乘法

Fraction mul(Fraction f1,Fraction f2) {
    Fraction result;
    result.up = f1.up*f2.up;
    result.down = f1.down*f2.down;
    return reduction(result);
}

2.4 分数的除法

Fraction div(Fraction f1,Fraction f2) {
    Fraction result;
    result.up = f1.up*f2.down;
    result.down = f1.down*f2.up;
    return reduction(result);
}

        分数的除法在使用前应注意,除数f2不能为0

3 补充

        在分数的四则运算中,要时刻注意结果的取值范围是否会发生溢出现象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值