如何将数字显示从科学记数法改为数字显示?gydF4y2Ba

4960次浏览(最近30天)gydF4y2Ba
脚翼gydF4y2Ba
脚翼gydF4y2Ba 2011年8月6日gydF4y2Ba
如何使MATLAB输出全数字,而不使用科学符号?gydF4y2Ba

接受的答案gydF4y2Ba

奥列格•科马罗夫gydF4y2Ba
奥列格•科马罗夫gydF4y2Ba 2011年8月6日gydF4y2Ba
格式gydF4y2Ba长gydF4y2Ba
或gydF4y2Ba
sprintf (gydF4y2Ba' % 16. f 'gydF4y2Ba, 2332456943534324)gydF4y2Ba
9日评论gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba 2020年4月21日gydF4y2Ba
我相信这些地方的存储的数字不是最接近的可表示的数字的值将舍入。gydF4y2Ba

登录评论。gydF4y2Ba

更多的答案(6)gydF4y2Ba

图像分析gydF4y2Ba
图像分析gydF4y2Ba 2011年8月7日gydF4y2Ba
编辑:gydF4y2BaMathWorks支金宝app持团队gydF4y2Ba 2018年11月8日gydF4y2Ba
若要在不使用科学记数法的情况下显示变量的最大位数,请将输出显示格式设置为“longG”:gydF4y2Ba
格式gydF4y2BalongGgydF4y2Ba
设置显示格式后,变量以十进制形式显示:gydF4y2Ba
m =兰德(1、3)/ 1000gydF4y2Ba
m =gydF4y2Ba
0.000546881519204984 0.000957506835434298 0.00096488853519927gydF4y2Ba
为了避免对超过2^50的变量显示科学符号,使用“sprintf”。例如,这段代码以十进制形式显示数字2332456943534324:gydF4y2Ba
sprintf (gydF4y2Ba' % 16. f 'gydF4y2Ba, 2332456943534324)gydF4y2Ba
ans =gydF4y2Ba
“2332456943534324”gydF4y2Ba
有关更多信息,请参阅“format”文档:gydF4y2Ba
2的评论gydF4y2Ba
图像分析gydF4y2Ba
图像分析gydF4y2Ba 2011年8月7日gydF4y2Ba
是的,它会有帮助。有时即使是这样,也会有一些人偷偷通过(如果小数点右边有三个以上的0),就像我试过的:gydF4y2Ba
m =gydF4y2Ba
第1至第4列gydF4y2Ba
0.000538342435260057 0.000996134716626886 7.81755287531837e-005 0.000442678269775446gydF4y2Ba
第5至8栏gydF4y2Ba
4.63422413406744e-006 0.000774910464711502gydF4y2Ba

登录评论。gydF4y2Ba


马克·鲍尔gydF4y2Ba
马克·鲍尔gydF4y2Ba 2017年10月20日gydF4y2Ba
编辑:gydF4y2Ba马克·鲍尔gydF4y2Ba 2017年10月20日gydF4y2Ba
一个好的、一致的解决方案是使用“num2str()”。同样的调用也适用于从命令行显示:gydF4y2Ba
> val = 1234567890gydF4y2Ba
val =gydF4y2Ba
1.234567890000000 e + 09年gydF4y2Ba
> num2str (val)gydF4y2Ba
ans =gydF4y2Ba
1234567890gydF4y2Ba
同样在print语句中:gydF4y2Ba
> sprintf (num2str (val))gydF4y2Ba
ans =gydF4y2Ba
1234567890gydF4y2Ba
它也适用于浮点数:gydF4y2Ba
> val = 123456.789gydF4y2Ba
val =gydF4y2Ba
1.234567890000000 e + 05gydF4y2Ba
> sprintf (num2str (val))gydF4y2Ba
ans =gydF4y2Ba
123456.789gydF4y2Ba
>gydF4y2Ba
2的评论gydF4y2Ba
斯蒂芬。gydF4y2Ba
斯蒂芬。gydF4y2Ba 2018年2月20日gydF4y2Ba
sprintf (num2str (val))gydF4y2Ba
的gydF4y2Ba sprintfgydF4y2Ba 完全是多余的,它在这里没有什么有用的,只是减慢了代码。在任何情况下,使用适当的gydF4y2Ba sprintfgydF4y2Ba 格式化字符串会比调用更快gydF4y2Ba num2strgydF4y2Ba ,并提供对数字数量的更多控制,所以为什么不这样做呢?gydF4y2Ba

登录评论。gydF4y2Ba


沃尔特·罗伯森gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba 2018年2月19日gydF4y2Ba
对于MS Windows和Linux,要获得整数而不是指数形式的数字,您需要使用Symbolic toolbox或者您需要使用一个工具,例如gydF4y2Ba //www.tatmou.com/matlabcentral/fileexchange/22239-num2strexact--exact-version-of-num2str-gydF4y2Ba 从文件交换。这对MS Windows来说是至关重要的,因为它在转换精确值方面做得相当差;Linux做得更好,但一段时间后仍然有不准确。gydF4y2Ba
在Mac (OS-X, MacOS)上,内置的转换是精确的,你可以选择sprintf()带有'%。1074 f的格式。例如,gydF4y2Ba
> > sprintf (gydF4y2Ba“% .1074f”gydF4y2Ba每股收益(最小正浮点数)gydF4y2Ba
ans =gydF4y2Ba
“0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625的gydF4y2Ba
对于较大的值,您可能希望从转换后的字符串中去掉末尾的零gydF4y2Ba
val =π* 1 e - 200;gydF4y2Ba
regexprep (sprintf (gydF4y2Ba“% .1074f”gydF4y2Ba, val),gydF4y2Ba“0 + $”gydF4y2Ba,gydF4y2Ba''gydF4y2Ba,gydF4y2Ba“lineanchors”gydF4y2Ba)gydF4y2Ba
ans =gydF4y2Ba
“0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003141592653589793111936498419027683964072757959391149845317813416927695644722162706379483043156554579881967829022575831926635177847590589777088086173081089243142930507159490615800591052996089483276727788901006686618108987452642387169053033459820326372299902201815389727889699071056417123601253516892437642498120285079407325647552658339885701180059456745257476645670329996938769926310811984167666114826593537757304481509915842491117931968666219637406979734598283259283758102504979792257699955371208488941192626953125的gydF4y2Ba

Kaveh VejdanigydF4y2Ba
Kaveh VejdanigydF4y2Ba 2018年2月19日gydF4y2Ba
我不明白你为什么接受了错误的答案。你正在寻找的是:格式短ggydF4y2Ba
欢呼,KavehgydF4y2Ba
3评论gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba 2018年2月19日gydF4y2Ba
> >格式短gydF4y2BaggydF4y2Ba
> >πgydF4y2Ba
ans =gydF4y2Ba
3.1416gydF4y2Ba
这是gydF4y2Ba 不gydF4y2Ba "全数字"gydF4y2Ba
> > 1000000gydF4y2Ba
ans =gydF4y2Ba
1 e + 06gydF4y2Ba
这甚至不是一个“荒谬的巨大数字”gydF4y2Ba
格式短g给你最多5个有效数字。gydF4y2Ba
格式长g最多给你15个有效数字。事实证明,在实践中,仅仅是独一无二是不够的。在unique中有24个不同的可表示值(pi-37*eps:eps:pi+9*eps),所有这些值在格式长g下显示为3.14159265358979。如果目标是输出足够的数字以能够以文本形式准确传输值,那么格式长g是不够的。gydF4y2Ba
人们总是会被这种事抓住的!gydF4y2Ba
格式gydF4y2Ba长ggydF4y2Ba
T = 0.3 - 0.2gydF4y2Ba
T = = 0.1gydF4y2Ba
T - 0.1gydF4y2Ba
T =gydF4y2Ba
0.1gydF4y2Ba
ans =gydF4y2Ba
逻辑gydF4y2Ba
0gydF4y2Ba
ans =gydF4y2Ba
-2.77555756156289 e-17gydF4y2Ba
人们很难理解为什么显示为0.1的值不等于0.1:格式长g的限制有实际的影响。gydF4y2Ba

登录评论。gydF4y2Ba


Huw年代gydF4y2Ba
Huw年代gydF4y2Ba 2017年1月31日gydF4y2Ba
如果你不需要知道所有的小数点,那就把方程圈起来。gydF4y2Ba
省去了指数函数的其他麻烦。gydF4y2Ba
1评论gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba 2017年1月31日gydF4y2Ba
不幸的是,事实并非如此:gydF4y2Ba
> >格式短gydF4y2Ba
> >轮(2 ^ 54)gydF4y2Ba
ans =gydF4y2Ba
1.8014 e + 16gydF4y2Ba
> >格式longgydF4y2BaggydF4y2Ba
> >轮(2 ^ 54)gydF4y2Ba
ans =gydF4y2Ba
1.8014398509482 e + 16gydF4y2Ba
> > uint64 (2 ^ 54)gydF4y2Ba
ans =gydF4y2Ba
uint64gydF4y2Ba
18014398509481984gydF4y2Ba

登录评论。gydF4y2Ba


克里斯托BoutsikasgydF4y2Ba
克里斯托BoutsikasgydF4y2Ba 2020年4月21日gydF4y2Ba
你也可以通过命令vpa使用可变精度算法。gydF4y2Ba
vpa (x)gydF4y2Ba%如果x是你感兴趣的输出数gydF4y2Ba
1评论gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba
沃尔特·罗伯森gydF4y2Ba 2020年4月21日gydF4y2Ba
这就是我和史蒂文讨论“符号工具箱”时提到的。gydF4y2Ba

登录评论。gydF4y2Ba

标签gydF4y2Ba

社区寻宝gydF4y2Ba

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!gydF4y2Ba

开始狩猎!gydF4y2Ba