本文主要是介绍Rational Arithmetic,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
📑打牌 : da pai ge的个人主页
🌤️个人专栏 : da pai ge的博客专栏
☁️宝剑锋从磨砺出,梅花香自苦寒来
☁️有理数运算
☁️【题目解析】
☁️【解题思路】
☁️【示例代码】
import java.util.*;
// s and the denominators
class Rational{
private long numerator; // 分子
private long denominator; // 分母
private long integer; // 整数部分
private boolean negetive = false; // 负数
private boolean isZero = false; // 分母为零
private long totalNumerator; // 参与运算的分子:整数+原来分子
public static long paraseNumerator(String s){
//只需从字符串中将分子截取出来
return Long.parseLong(s.substring(0, s.indexOf('/')));
}
public static long paraseDenominator(String s){
//只需从字符串中将分子截取出来
return Long.parseLong(s.substring(s.indexOf('/')+1, s.length()));
}
public Rational(long n, long d){
// 在输入的时候分母永远不可能为0,但是经过计算之后分母可能会为0
if(0 == d){
isZero = true;
return;
}
// 如果分子小于0,表示为负数
if(n < 0){
negetive = !negetive;
}
// 在输入的时候,分母永远不可能小于0,但是经过计算之后分母也可能会小于0
if(d < 0){
negetive = !negetive;
}
// 如果输入是假分数,需要将其调整为真分数,比如:5 / 3 ===> 1 2/3
integer = n / d;
numerator = n - integer * d;
denominator = Math.abs(d);
// 如果分数不是最简的形式,需要将其约分为最简的形式,比如:10 / 15--->2/3
// 在分子和分母的基础之上分别处以分子和分母的最大公约数
if(numerator > 1 || numerator < -1){
long gcd = calcGCD(Math.abs(numerator), denominator);
if(gcd > 0){
numerator /= gcd;
denominator /= gcd;
这篇关于Rational Arithmetic的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!