问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java的分数运算问题

发布网友 发布时间:2022-05-01 07:09

我来回答

2个回答

热心网友 时间:2022-06-25 22:02

import java.util.Scanner;

public class Du{
public static void main(String args[]) throws Exception{

System.out.println("Please input a string in format xx/xx");

Scanner scanner = new Scanner(System.in);
String input = scanner.next();

String[] ary = input.split("/");

int numerator = Integer.parseInt(ary[0].trim());
int denominator = Integer.parseInt(ary[1].trim());

Fraction fra = new Fraction(numerator, denominator);
Fraction fra2 = new Fraction(15, 7);
Fraction fra3 = new Fraction(13, 12);

fra2.multiple(fra);//测试乘法
System.out.println("15/7 * 1/3 = " + fra2.toString());

fra.add(fra3);//测试加法
System.out.println("1/3 + 13/12 = " + fra.toString());
}
}

class Fraction{

private int numerator;//分子
private int denominator;//分母

public Fraction(int numerator, int denominator) throws Exception{
if(denominator == 0){//分母为0,出错
throw new Exception("Denominator can't be ZERO!");
}

this.numerator = numerator;
this.denominator = denominator;
}

public void multiple(Fraction fract2){//分数相乘
numerator *= fract2.numerator;//分子相乘
denominator *= fract2.denominator;//分母相乘

//结果约分
int lcd = getLCD(numerator, denominator);//最大公约数
numerator = numerator / lcd;
denominator = denominator /lcd;
}

public void add(Fraction fract2){
int gcm = getGCM(denominator, fract2.denominator);//最小公倍数作为分母

numerator *= gcm / denominator;//分子通分
fract2.numerator *= gcm / fract2.denominator;//第二个分子通分

numerator += fract2.numerator;//分子相加
denominator = gcm;//分母为最小公倍数

//约分
int lcd = getLCD(numerator, denominator);

if(lcd != 1){
numerator = numerator / lcd;
denominator = denominator / lcd;
}
}

public String toString(){
return numerator + "/" + denominator;
}

//求最大公约数
public static int getLCD(int num1, int num2){
int max = Math.max(num1, num2);
int min = Math.min(num1, num2);

while(max % min != 0){
int temp = max;
max = min;
min = temp % min;
}

return min;
}

//求最小公倍数
public static int getGCM(int num1, int num2){
return num1 * num2 /getLCD(num1, num2);
}

}
-----------------
Please input a string in format xx/xx
1/3
15/7 * 1/3 = 5/7
1/3 + 13/12 = 17/12

所有分数都可以通过乘10得倍数而达到分子和分母都是int类型的,所以没有问题的。

热心网友 时间:2022-06-25 22:03

这个题目是否需要需要考虑精度问题?是否需要考虑分子分母为分整数?如果需要的话上面的答案是有问题的。需要换一下2个参数类型。涉及到小数的加减乘除最好是用BigDecimal类型然后再转换
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
移动电源哪个牌子好耐用质量好?十大公认耐用充电宝推荐! iPhone 12 Pro max要不要更新ios 15.7.1 成份指数指数的权数及计算公式 什么是分类商品价格指数 关于我国零售价格指数编制方法的说法,正确的有( )。 居民消费价格指数如何确定商品和权数? 什么是全国农产品批发价格指数 把钱赚美了的歌词是什么? 有个哥歌词有"再苦再累,..." 是什么歌? 买单反相机有必要买遮光罩吗?如果买D80+18-70头要买什么样的?价格多少... java中如何进行2个分数的加减乘除 java用递归的方法求分数的和怎么算 java中怎样实现分数的累加 计算机或者软件工程,或者其他专业,哪个在人工智能方面学得比较深? android 如何在数据库中获得数据 得到的数据又是如何放在Adpter中的,又是如何显示在listView中的 人工智能来了,还有必要考研吗 《人工智能》《算法设计与分析》《信息安全概论》三门课程,选哪一个好呢?能请IT行业的详细说说吗?谢谢 如此芯痛:为什么我们都不学核心技术 orbis 和汉净肌 哪能买 Java学习可以做人工智能吗?看到网上最近好多关于人工智能的东西? ILLUME和ORBIS在日本的口碑怎么样? 西电的智能和哈工大深研院的智能相比哪个更好?本人西电学生想考研 这是ORBIS的什么化妆水? 100-45×0.84简算怎么算? 深研信息科技(深圳)有限公司怎么样? 100-45➗5 100-45等于几应该怎么讲 讲解100—45=55的运算方法 奥蜜思精华水和tst哪个好? 怎么用公式计算100减45累计减 java如何处理文本文件中的分数?假设从文件读入两个分数相加输出结果 java如何实现千万亿位分数如何进行加减? 淋雪共白头诗句完整版? java 分数函数加减法 编程 用java的for循环把同一时间段的分数累加 javasript分数累加 用java的for循环语句将从数据库提取的同一年获得的分数累加 悬赏知道 有雪 字的爱情诗句. 在Java定义一个类,只算两个分数的加法? 测试a是1/2 b是1/3 大雪写一首情诗 求教我这个java分数四则运算,num1怎么随着运算而变化的,求改正。还有怎么把符号带入运算? 吐丝造句 关于大雪与爱人的诗句 JAVA;.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和 JAVA累加。。 用java编写分数相乘 使用java编辑分数运算,怎样将每个分数作为一个独立的数据进行处理,请大侠帮忙,我没分数,直接给人民币 用两个“像”字造句。急呀! 用JAVA编写一个有理数求和1/1+1/2+1/3...1/n,要求其结果用最简分数表示。 iPhone6/6 Plus分期付款购买流程