在Matlab中计算百分比

在Matlab中计算百分比,matlab,decimal,percentage,Matlab,Decimal,Percentage,我想计算准确率。我有下面的代码。但它给出了意想不到的输出,如“精度为2.843137e+01x37”。 而预期结果是“准确率为28.43%” 如何修复它 任何帮助都将不胜感激。 谢谢。试试看 a = 'The accuracy is %f.'; acc = 100 * double(y/j); sprintf (a,acc) 你几乎达到了你的预期,只要用正确的方式把它组合起来就行了 28.43%的正确格式说明符是%.2f%%。这将在小数点后提供两位数字,并在末尾添加%-号。您在变量percen

我想计算准确率。我有下面的代码。但它给出了意想不到的输出,如“精度为2.843137e+01x37”。 而预期结果是“准确率为28.43%”

如何修复它

任何帮助都将不胜感激。 谢谢。

试试看

a = 'The accuracy is %f.';
acc = 100 * double(y/j);
sprintf (a,acc)

你几乎达到了你的预期,只要用正确的方式把它组合起来就行了

28.43%的正确格式说明符是
%.2f%%
。这将在小数点后提供两位数字,并在末尾添加%-号。您在变量
percent
中定义了该值,但
.0
应为
.2
,如您在预期结果中所写。如果你仔细观察,你会发现,
percent
从未被使用过

让我们得出结论。将格式说明符更改为以下内容:

a = 'The accuracy is %.2f%%'; 
这就是你需要做的。定义
percent
的行以及
格式short
可以省略,除非您以后需要它

重要的一点是,要加倍施放:你目前拥有的只是施放结果。如有必要,在除法前分别对y和/或j进行铸型。也许你不需要任何铸造在你的案件


假设
y
j
的整个代码为:

输出:

ans=
准确率为28.43%

什么是
y
,什么是
j
以及它们的类型是什么?也许你想在除法之前显式施放双倍。顺便说一下,2.843e+01==28.43?@AnaAin不客气。还有一点需要注意的是:我假设不需要将演员阵容加倍。我扩展了我的答案,以显示在需要时正确的施法方式。
a = 'The accuracy is %.2f%%'; 
y = 28.43137;   %// Amount of correct data
j = 100;        %// Amount of all data

a = 'The accuracy is %.2f%%';
acc = 100 * (y/j);                    %// no cast
% acc = 100 * (double(y)/double(j));  %// with cast
sprintf(a,acc);