Matlab-小数点后的最大位数

时间:2014-08-20 13:10:43

标签: matlab format double decimal printf

我希望在必要时小数点后有最大 3位数。Sprintfformat bank不能满足我的需要。这个数字将出现在图中的文本框中。

基本上我尝试过:

tt=2.4242 sprintf('%.3f', tt) tt=2.424

这对于小数点后有3位或更多位数的数字有好处,但如果我没有数字(对于数学家:我的意思是小数点后的0)或1位数,它没有'看起来那么好。例如:

tt= 0 
sprintf('%.3f', tt)
tt=0.000

是否有功能或我必须使用iffor执行此操作?

感谢您的帮助!

2 个答案:

答案 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到期,我几天前问了同样的问题,这就是我知道答案的原因。)