Function to chop a decimal to a variable number of digits
40 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I wrote the following function to approximate a number using chopping arithmetic.
chop(5,4.333352312)
function output = chop(numdigits,float)
y = floor(log10(float)+1); %number of digits in the integer part
x = fix(numdigits - y);
fprintf("%.xf",float)
end
The function is meant to approximate a float using numdigits chopping arithmetic. Since that is a variable, the number of digits after the decimal point is unknown. The output in the above example should be 4.3333 but the output is 4e+00. Is there any alternate way to display a variable number of digits after the decimal point?
0 commentaires
Réponse acceptée
Stephen23
le 3 Oct 2020
Modifié(e) : Stephen23
le 3 Oct 2020
You can use an asterisk * to refer to an input of fprintf, so in your case all you need is:
fprintf("%.*f\n",x,float);
and tested:
>> chop(5,4.333352312)
4.3334
Of course if you want to return that string as an output argument you will need to use sprintf instead:
function s = chop(numdigits,float)
y = floor(log10(float)+1);
x = fix(numdigits - y);
s = sprintf("%.*f",x,float);
end
Plus de réponses (1)
Ameer Hamza
le 3 Oct 2020
Modifié(e) : Ameer Hamza
le 3 Oct 2020
MATLAB does not recognize what does 'x' means inside fprintf() function call. Try the following code
chop(3,4.333352312)
function chop(numdigits,float)
y = floor(log10(float)+1); %number of digits in the integer part
fprintf(sprintf('%%%d.%df', numdigits+1, numdigits-y), float);
end
0 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!