python输出假分数_分数的表示以及计算(c++)
之前一直總是簡單的想將分數化為小數進行計算,其實使用相應的結構進行分子分母的分開保存,可以有奇效;
分數的存儲:
struct Fraction{
int up;
int down;
};
其中up代表分子,down代表分母;
對于分數,有基本的幾個規則:
1.正負號掛在分子上;
2.當分數表示0的時候,分子為0,分母為1;
3.分子分母必須達到最簡,也就是沒有1以外的公約數;
當分數進行四則運算的時候,也是基于這三條的性質來進行化簡;
Fraction reduction(Fraction result){
if(result.down<0){
result.up=-result.up;
result.down=-result.down;
}
if(result.up==0){
result.down=1;
}else{
int d=gcd(abs(result.up),abs(result.down));
result.up/=d;
result.down/=d;
}
return result;
}
其中值得注意的是進行最大公約數計算的時候一定要注意注意分子可能為負,所以要進行絕對值的提前處理;
分數的四則運算:
在上述化簡函數的基礎上,我們就可以根據該規則進行相應的四則運算,四則運算嚴格遵循計算的通分規律;
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.減法運算:
Fraction minu(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.down-f1.down*f2.up;
result.down=f1.down*f2.down;
return reduction(result);
}
3.乘法運算
Fraction multi(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.up;
result.down=f2.down*f2.down;
return reduction(result);
}
4.除法運算:
Fraction divide(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.down;
result.down=f2.up*f2.down;
return reduction(result);
}
值得注意的是這里采用的除法的倒數計算;
分數的輸出形式:
對于一個正常形式的分數,往往有三種形式:
1.整數:此時只輸出分子(由于程序代碼里對分子分母進行化簡,所以如果有整數分母一定為1);
2.真分數:此時按照a/b的格式輸出;
3.假分數:此時應該在按照帶分數的格式輸出,并且符號在前;
代碼如下:
void showResult(Fraction r){
r=reduction(r);
if(r.down==1)
printf("%lld",r.up);
else if(abs(r.up)>r.down){
printf("%d %d/%d",r.up/r.down,abs(r.up)%r.down,r.down);
}else{
printf("%d/%d",r.up,r.down);
}
}
值得注意的是當進行帶分數計算的時候,計算其后真分數余數的時候,一定要注意abs絕對值得處理;
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python输出假分数_分数的表示以及计算(c++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arduinoesp8266定时器_es
- 下一篇: centos7查看当前系统时间、_Cen