我希望在必要时小数点后有最大 3位数。Sprintf
和format bank
不能满足我的需要。这个数字将出现在图中的文本框中。
基本上我尝试过:
tt=2.4242
sprintf('%.3f', tt)
tt=2.424
这对于小数点后有3位或更多位数的数字有好处,但如果我没有数字(对于数学家:我的意思是小数点后的0)或1位数,它没有'看起来那么好。例如:
tt= 0
sprintf('%.3f', tt)
tt=0.000
是否有功能或我必须使用if
或for
执行此操作?
感谢您的帮助!
答案 0 :(得分:1)
在sprintf('%.3f', tt)
之后,使用regexprep
到
那是:
regexprep(sprintf('%.3f', tt), '(\.*0+)$', '')
示例:
>> tt = 4.1; regexprep(sprintf('%.3f', tt), '(\.*0+)$', '')
ans =
4.1
>> tt = 4; regexprep(sprintf('%.3f', tt), '(\.*0+)$', '')
ans =
4
答案 1 :(得分:0)
尝试g
格式说明符而不是f
:
sprintf('%.4g', tt)
另见:How to have sprintf to ignore trailing zeros(给@RTL到期,我几天前问了同样的问题,这就是我知道答案的原因。)