Вы почти есть то, что вы ожидали, просто положить его вместе правильный путь.
Правильный формат спецификации для 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%
Что такое 'y', что' j' и каков их тип? Вероятно, вы хотите сделать явное приведение, чтобы удвоить перед делением. – Bernhard
Кстати, 2.843e + 01 == 28.43? – Bernhard