在八度音程中,如何打印最多d个小数位的数字,其中d是用户输入的值

时间:2017-02-05 13:11:25

标签: octave

我想打印一个变量val,最多d个小数位,其中d由用户输入。编写程序时不知道d的值。

我尝试了以下内容:

printf ('%.df',val);
printf ('%.{%i}f',d,val);

但它似乎无法奏效。

2 个答案:

答案 0 :(得分:2)

您可以使用特殊格式规范*来指示格式参数。 E.g:

octave:1> val = exp(1)
  val =  2.7183
octave:2> decimalPlaces = 3;
octave:3> fprintf('The value to 3 sig digits is: %.*f \n', decimalPlaces, val) 
   The value to 3 sig digits is: 2.718 

matlab documentation有一个很好的部分。

答案 1 :(得分:1)

您需要先生成具有正确值的格式字符串;它不会在fprintf

中被替换
d = 5;
val = 7.123456789
fmt_str = ['%.' num2str(d) 'f'];   % fmt_str = '%.df', d replaced with number
fprintf(fmt_str, val);