matlab如何把小数转换成分数

求逆矩阵的时候求出来的是矩阵是小数,怎样吧这些小数转换成分数呢... 求逆矩阵的时候求出来的是矩阵是小数,怎样吧这些小数转换成分数呢 展开
 我来答
问明6E
高粉答主

2019-05-22 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:16万
展开全部

#include<iostream>

#include<string>

#include<math.h>

using namespace std;

//求最大公约数函数

__int64 gcd(__int64 a,__int64 b)

{

__int64 m;

for(m=a%b;m!=0;m=a%b)

{

a=b;

b=m;

}

return b;

}

int main()

{

string input;

while(cin>>input)

{

int indexDot=input.find('.')+1;//小数点的位置

int indexXH=input.find('(');//循环位的位置

bool flag=false;

if(indexXH!=string::npos)

{

flag=true;//说明有循环位

indexXH++;

}

//有限小数转分数

if(!flag)

{

int lenDecimal=input.length()-indexDot;

string decimal=input.substr(indexDot,lenDecimal);

__int64 up=atoi(decimal.c_str());//得到分子

//cout<<lenDecimal<<''<<up<<endl;

__int64 down=pow(10,lenDecimal);

__int64 common=gcd(up,down);

printf("分子是:%I64d\t分母是:%I64d\n",up/common,down/common);

}

//循环小数转分数

else

{

int n=indexXH-indexDot-1;//非循环位的长度

int m=input.length()-indexXH-1;//循环位的长度

string strN=input.substr(indexDot,n);

string strM=input.substr(indexXH,m);

int num1=atoi(strN.c_str());

int num2=atoi(strM.c_str());

//cout<<num1<<''<<num2<<''<<m<<''<<n<<endl;

__int64 up=num1*(pow(10,m)-1)+num2;

__int64 down=(pow(10,m)-1)*pow(10,n);

//printf("%I64d\t%I64d",up,down);

__int64 common=gcd(up,down);

printf("分子是:%I64d\t分母是:%I64d\n",up/common,down/common);

}

}

return 0;

}

扩展资料:

return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。

return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

cxd1301
推荐于2017-10-12 · TA获得超过3021个赞
知道小有建树答主
回答量:593
采纳率:50%
帮助的人:380万
展开全部
>> format short %%%% MATLAB默认格式,小数显示
>> A =[1 2 ;3 4];
>> B=inv(A)

B =

-2.0000 1.0000
1.5000 -0.5000

>> format rat %%%%% 转成分数表示
>> B

B =

-2 1
3/2 -1/2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Finding___
推荐于2017-09-10 · TA获得超过2万个赞
知道大有可为答主
回答量:7100
采纳率:0%
帮助的人:4742万
展开全部
>> format short %%%% MATLAB默认格式,小数显示
>> A =[1 2 ;3 4];
>> B=inv(A)

B =

-2.0000 1.0000
1.5000 -0.5000

>> format rat %%%%% 转成分数表示
>> B

B =

-2 1
3/2 -1/2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wqt38
2017-12-20 · 超过14用户采纳过TA的回答
知道答主
回答量:30
采纳率:88%
帮助的人:6.1万
展开全部
如果小数点后是一位数就乘以10/10如0.5=0.5×10/10=5/10=1/2
如果小数点后是两位数就乘以100/100,如0.15=0.15×100/100=15/100=3/20
如果小数点后是三位数就乘以1000/1000以此类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式