MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]如何打印输出20位的e值? (https://www.labfans.com/bbs/showthread.php?t=3629)

yottaarray 2008-06-17 10:44

[求助]如何打印输出20位的e值?
 
有个作业,要输出"自然对数底数 e= 2.7......."要求e保留小数点后20位,并且由matlab给出。

用f%最多只能输出16位,16位以后就都是0了

我现在用vpa可以输出20位小数,但没办法用sprintf输出,请教各位如何解决?:lovely:

watcher 2008-06-17 13:01

matlab中的fprintf(...)函数与C语言中的fprintf(...)完全类似,LZ的要求可以通过这个格式完成。
fid = fopen('***.txt','wt');
fprintf(fid,'自然对数底数 e= %1.20f\n',exp(1));

详情请查看fprintf的函数说明。

yottaarray 2008-06-17 13:56

[QUOTE=watcher;12732]matlab中的fprintf(...)函数与C语言中的fprintf(...)完全类似,LZ的要求可以通过这个格式完成。
fid = fopen('***.txt','wt');
fprintf(fid,'自然对数底数 e= %1.20f\n',exp(1));

详情请查看fprintf...[/QUOTE]

麻烦再详细点好么?这样输出的结果是’自然对数底数 e= 2.71828182845904550000‘,后几位还是0

watcher 2008-06-17 15:03

这个问题以前还真没注意过,原来matlab的浮点数只有16位小数。
既然这样的话,LZ的问题可以借助符号运算解决。
digits(21);%设置符号运算的精度,默认是32,这里按照LZ的意思设成21,其中一位是小数点前的
pretty(vpa(sym('exp(1)')));%在命令窗口中打印出e

yottaarray 2008-06-17 16:11

[QUOTE=watcher;12742]这个问题以前还真没注意过,原来matlab的浮点数只有16位小数。
既然这样的话,LZ的问题可以借助符号运算解决。
digits(21);%设置符号运算的精度,默认是32,这里按照LZ的意思设成21,其中一位是小数点前的
pretty(vpa(sym('exp(1)')));%在命令窗口中打印...[/QUOTE]

不错,输出来了,再多问一点,那个前缀,自然地数对数e怎么加进去,在前边加fprintf结果输出不在一行上:redface:

watcher 2008-06-17 16:36

用char(...)将sym类型转换成char,然后怎么干都行了。e.g.
sprintf('自然对数底数 e=%s',char(vpa(sym('exp(1)'))));

yottaarray 2008-06-17 16:50

[QUOTE=watcher;12746]用char(...)将sym类型转换成char,然后怎么干都行了。e.g.
sprintf('自然对数底数 e=%s',char(vpa(sym('exp(1)'))));[/QUOTE]

watcher大感谢,好人呐~~~:cry: 本问题完美解决

fanxing39 2008-06-19 00:09

:smile: 真强! 这都能行,就是复杂了一点点 ,还有个更简单的方法,我去找下,明天发上来!


所有时间均为北京时间。现在的时间是 12:27

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.