matlab如何把小数转换成分数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab如何把小数转换成分数相关的知识,希望对你有一定的参考价值。

求逆矩阵的时候求出来的是矩阵是小数,怎样吧这些小数转换成分数呢

#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就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

参考技术A >> 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本回答被提问者采纳
参考技术B >> 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
参考技术C 如果小数点后是一位数就乘以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小时23分即为2.383小时;3小时30分即为3.500小时。

秦九韶则将单位注在表示整数部分个位的筹码之下,例如: —Ⅲ—Ⅱ表示13.12寸 寸是世界上最早的小数表示法。

在欧洲和伊斯兰国家,古巴比伦的六十进制长期以来居于统治地位,一些经典科学著作都是采用六十进制,因此十进制小数的概念迟迟没有发展起来。15世纪中亚地区的阿尔卡西(?~1429)是中国以外第一个应用小数的人。

由来:

中国自古以来就使用十进位制计数法,一些实用的计量单位也采用十进制,所以很容易产生十进分数,即小数的概念。第一个将这一概念用文字表达出来的是魏晋时代的刘徽。

他在计算圆周率的过程中,用到尺、寸、分、厘、毫、秒 、忽等7个单位;对于忽以下的更小单位则不再命名,而统称为“微数”。

到了宋、元时代,小数概念得到了进一步的普及和更明确的表示。杨辉《日用算法》(1262年)载有两斤换算 的口诀:“一求,隔位六二五;二求,退位一二五”,即1/16=0?0625;2/16=0?125。 这里的“隔位”、“退位”已含有指示小数点位置的意义。




参考技术A 2小时23分即为2.383小时;
3小时30分即为3.500小时。

1小时有60分钟,欲将分钟数转换为小数形式的小时数,将分钟数除以60即可。追问

公式有没有

追答

这还要问呀!
首先把所有单位都统一换算到分钟:
比如,2小时23分,就是2x60+23=143(分钟)
然后把这个和除以60就是以小时计的了:143/60=2.38333333(小时)
如果以同样原理计算精确到秒的时间,你会不会?
比如2小时23分钟52秒。。。

以上是关于matlab如何把小数转换成分数的主要内容,如果未能解决你的问题,请参考以下文章

C++将小数(double)转化为分数(Rational)

SQL怎么把小数转换为百分比?

java 如何把小数变成分数

小数怎么转化分数?

matlab 将数字转换成字符串,可不可以按小数点后的位数来保留?

jquery怎么将4位小数转换成1位