当我在Mathematica中输入此代码时
t^3 + 6898033663572324079/6917529027641081856 // N
它将表达式简化为0.997182 + t^3
。
如何在MATLAB中实现相同的行为?请注意,t
是一个符号变量。
答案 0 :(得分:3)
使用vpa
:
syms t
outExact = t^3 + 6898033663572324079/6917529027641081856
outFloat = vpa(outExact)
outExact =
t^3 + 8981814666109797/9007199254740992
outFloat =
t^3 + 0.99718174452310093247575650821091
可选您可以设置数字位数,例如得到digits(5)
:
outFloat =
t^3 + 0.99718
或outFloat = vpa(outExact,5)
具有相同的效果。
科学记数法并非无足轻重,这是一个非泛型解决方案作为起点:
f(t) = t^3 + 6898033663572324079/6917529027641081856
remain = f(0)
f(t) = f(t) - remain
sprintf('%s + %1.3e',char(f(t)),double(remain))