Sig figs on the rand function

Just another general question here, is there a reason the rand function has 6 sig figs? i.e. 12.3456
Is there a way to change this so there are more or less post decimal? Or is this just how MATLAB handles this function, generally.
Thank you in advance!

 Respuesta aceptada

Chunru
Chunru el 20 de Mzo. de 2024
==> Just another general question here, is there a reason the rand function has 6 sig figs? i.e. 12.3456
rand function (by defaut) has "double" type, which means it is represented internally by 64bits, precision of up to 15 digits.
MATLAB has a default display format, which is "short" and has 4 digits after decimal point (Note: this is only for display, internal computations are based on double).
==>Is there a way to change this so there are more or less post decimal? Or is this just how MATLAB handles this function, generally.
Use format long to display data with more digits after decimal point (doc format for more details)
a = rand(); % internally stored as double
a % default (4 digits after dp)
a = 0.0083
format long % (15 digits after dp)
a
a =
0.008251124809451

3 comentarios

Spaceman
Spaceman el 20 de Mzo. de 2024
Editada: Spaceman el 20 de Mzo. de 2024
Thank you! The world of computing and coding is so interesting. I will be using the format long function in the future for curiosity sake alone! In my example, where would I put 'format long' in my code to show all 15 digits?
% format long?
grade=rand(1,49)*(100-20)+20; % could also do randi([20 100],1,49);
% format long?
grade_avg=mean(grade);
fprintf('The average grade is %1.0f \n',grade_avg)
if grade_avg>=60
disp('passing average')
else
disp('failing average')
end
Also how would I revert back to the standard format? 'format short'?
% format long?
format long
grade=rand(1,49)*(100-20)+20; % could also do randi([20 100],1,49);
% format long?
grade_avg=mean(grade);
grade_avg
grade_avg =
61.084787400165922
% Use fprintf for more control of the format
%fprintf('The average grade is %1.0f \n',grade_avg)
fprintf('The average grade is %0.10f \n',grade_avg) % 10 digits after dp
The average grade is 61.0847874002
if grade_avg>=60
disp('passing average')
else
disp('failing average')
end
passing average
format default % revert to default
grade_avg
grade_avg = 61.0848
Spaceman
Spaceman el 20 de Mzo. de 2024
Thank you. So default format is 'format short'. The power MATLAB holds is but only scratched on the surface by me.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Entering Commands en Centro de ayuda y File Exchange.

Productos

Versión

R2023b

Etiquetas

Preguntada:

el 20 de Mzo. de 2024

Comentada:

el 20 de Mzo. de 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by