我想计算准确度的百分比。我有下面的代码。但它给出了这样的意外输出"准确度是2.843137e + 01x37"。 虽然预期结果为"准确度为28.43%"
y %Amount of correct data
j %Amount of all data
a = 'The accuracy is %dx%d.';
percent = '%.0f%%';
format short
acc = 100 * double(y/j);
sprintf (a,acc)
如何解决?
任何帮助都会非常感激。 谢谢。
答案 0 :(得分:2)
你几乎拥有了你所期望的,只要把它放在一起就好了。
28.43%的正确格式说明符为%.2f%%
。这会在小数点后面给出两位数,并在末尾添加%-sign。您已在变量percent
中定义了该值,但.0
应为.2
,因为您已在预期结果中写入两位数字。仔细观察,您会发现percent
从未使用过。
让我们得出结论。将格式说明符更改为以下内容:
a = 'The accuracy is %.2f%%';
这就是你需要做的一切。定义percent
的行可以省略format short
,除非您以后需要这样做。
关于演员要加倍的重要事项:你现在拥有的只是投射结果。如果必要,请在分割之前单独执行 到y
和/或j
。可能你不需要任何铸造。
假设y
和j
的整个代码是:
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);
输出:
ans =
The accuracy is 28.43%
答案 1 :(得分:1)
尝试,
class FilterModel(QStandardItemModel):
def __init__(self, filter_list, parent=None):
super(FilterModel, self).__init__(parent)
for index, filter in enumerate(filter_list):
item = QStandardItem(filter)
item.setSelectable(True)
item.setCheckable(True)
item.setCheckState(Qt.Unchecked)
self.setItem(index, 0, item)