如何将数字显示从科学计数法更改为完整的数字?gydF4y2Ba

3.865次观看(过去30天)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
若要在不使用科学计数法的情况下显示变量的最大位数,请将输出显示格式设置为"long ":gydF4y2Ba
格式gydF4y2BalongGgydF4y2Ba
设置显示格式后,变量以十进制显示:gydF4y2Ba
M = rand(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
有关更多信息,请参阅“格式”文档: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
0.000106652770180584 0.000961898080855054 4.63422413406744e-006 0.000774910464711502gydF4y2Ba

登录评论。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),所有这些值在格式long g下都显示为3.14159265358979。如果目标是输出足够多的数字以能够准确地以文本形式传输这些值,那么格式long 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


马克·鲍尔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
Stephen23gydF4y2Ba
Stephen23gydF4y2Ba 2018年2月20日gydF4y2Ba
编辑:gydF4y2BaStephen23gydF4y2Ba 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工具箱或您需要使用诸如gydF4y2Ba //www.tatmou.com/matlabcentral/fileexchange/22239-num2strexact--exact-version-of-num2str-gydF4y2Ba 从文件交换。这对于微软Windows来说是至关重要的,因为它在转换精确值方面做得相当差;Linux做得更好,但在一段时间后仍然有不准确的地方。gydF4y2Ba
在Mac (OS-X, MacOS)上,内置转换是精确的,您可以选择带有'%的sprintf()。1074 f的格式。例如,gydF4y2Ba
> > sprintf (gydF4y2Ba“% .1074f”gydF4y2Ba每股收益(最小正浮点数)gydF4y2Ba
ans =gydF4y2Ba
“0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625的gydF4y2Ba
对于较大的值,您可能需要从转换后的字符串中删除后面的0gydF4y2Ba
val = pi*1E-200;gydF4y2Ba
regexprep (sprintf (gydF4y2Ba“% .1074f”gydF4y2Ba, val),gydF4y2Ba“0 + $”gydF4y2Ba,gydF4y2Ba”gydF4y2Ba,gydF4y2Ba“lineanchors”gydF4y2Ba)gydF4y2Ba
ans =gydF4y2Ba
“0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003141592653589793111936498419027683964072757959391149845317813416927695644722162706379483043156554579881967829022575831926635177847590589777088086173081089243142930507159490615800591052996089483276727788901006686618108987452642387169053033459820326372299902201815389727889699071056417123601253516892437642498120285079407325647552658339885701180059456745257476645670329996938769926310811984167666114826593537757304481509915842491117931968666219637406979734598283259283758102504979792257699955371208488941192626953125的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
>>格式长ydF4y2BaggydF4y2Ba
> >轮(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 Central中找到宝藏,并发现社区如何帮助您!gydF4y2Ba

开始狩猎!gydF4y2Ba

翻译的gydF4y2Ba