Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-06-17, 10:44   #1
yottaarray
初级会员
 
注册日期: 2008-06-17
年龄: 37
帖子: 5
声望力: 0
yottaarray 正向着好的方向发展
默认 [求助]如何打印输出20位的e值?

有个作业,要输出"自然对数底数 e= 2.7......."要求e保留小数点后20位,并且由matlab给出。

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

我现在用vpa可以输出20位小数,但没办法用sprintf输出,请教各位如何解决?:lovely:
yottaarray 当前离线   回复时引用此帖
旧 2008-06-17, 13:01   #2
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

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

详情请查看fprintf的函数说明。
watcher 当前离线   回复时引用此帖
旧 2008-06-17, 13:56   #3
yottaarray
初级会员
 
注册日期: 2008-06-17
年龄: 37
帖子: 5
声望力: 0
yottaarray 正向着好的方向发展
默认

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

详情请查看fprintf...
麻烦再详细点好么?这样输出的结果是’自然对数底数 e= 2.71828182845904550000‘,后几位还是0
yottaarray 当前离线   回复时引用此帖
旧 2008-06-17, 15:03   #4
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

这个问题以前还真没注意过,原来matlab的浮点数只有16位小数。
既然这样的话,LZ的问题可以借助符号运算解决。
digits(21);%设置符号运算的精度,默认是32,这里按照LZ的意思设成21,其中一位是小数点前的
pretty(vpa(sym('exp(1)')));%在命令窗口中打印出e
watcher 当前离线   回复时引用此帖
旧 2008-06-17, 16:11   #5
yottaarray
初级会员
 
注册日期: 2008-06-17
年龄: 37
帖子: 5
声望力: 0
yottaarray 正向着好的方向发展
默认

引用:
作者: watcher 查看帖子
这个问题以前还真没注意过,原来matlab的浮点数只有16位小数。
既然这样的话,LZ的问题可以借助符号运算解决。
digits(21);%设置符号运算的精度,默认是32,这里按照LZ的意思设成21,其中一位是小数点前的
pretty(vpa(sym('exp(1)')));%在命令窗口中打印...
不错,输出来了,再多问一点,那个前缀,自然地数对数e怎么加进去,在前边加fprintf结果输出不在一行上:redface:
yottaarray 当前离线   回复时引用此帖
旧 2008-06-17, 16:36   #6
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

用char(...)将sym类型转换成char,然后怎么干都行了。e.g.
sprintf('自然对数底数 e=%s',char(vpa(sym('exp(1)'))));
watcher 当前离线   回复时引用此帖
旧 2008-06-17, 16:50   #7
yottaarray
初级会员
 
注册日期: 2008-06-17
年龄: 37
帖子: 5
声望力: 0
yottaarray 正向着好的方向发展
默认

引用:
作者: watcher 查看帖子
用char(...)将sym类型转换成char,然后怎么干都行了。e.g.
sprintf('自然对数底数 e=%s',char(vpa(sym('exp(1)'))));
watcher大感谢,好人呐~~~:cry: 本问题完美解决
yottaarray 当前离线   回复时引用此帖
旧 2008-06-19, 00:09   #8
fanxing39
高级会员
 
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31
fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星
默认

:smile: 真强! 这都能行,就是复杂了一点点 ,还有个更简单的方法,我去找下,明天发上来!
fanxing39 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[资料]MATLAB_readme xiaoduan259 MATLAB论坛 2 2008-07-21 21:37
人脸识别分类器的设计问题 balance1216 MATLAB论坛 1 2008-07-21 09:33
[求助]如何用matlab画GENEMAPPER lzh_lsh MATLAB论坛 0 2008-07-08 12:00
神经网络第二次训练不收敛? zlmjqjqjq MATLAB论坛 0 2008-05-11 16:25
程序编写?怎样通过颜色深浅判断是否沉淀,求大家帮忙 msw918 MATLAB论坛 0 2008-04-24 10:22


所有时间均为北京时间。现在的时间是 11:55


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