num2str format

9 visualizaciones (últimos 30 días)
Martin
Martin el 6 de Mzo. de 2021
Comentada: Jan el 6 de Mzo. de 2021
I have problems with num2str format
I get a number from an API:
8.1784e+17
I need the exact number as str output. For instance I know it is:
'817835078876192769'.
I tried with:
num2str(x,'%u')
however this gives me the following wrong result:
ans =
'817835078876192768'
Anyone have a clue what can be wrong here?

Respuesta aceptada

Jan
Jan el 6 de Mzo. de 2021
Editada: Jan el 6 de Mzo. de 2021
What does "I get a number from an API: 8.1784e+17" mean? Is this a char vector, string or a UINT64 or double scalar? In the last case, remember that doubles contain about 16 digits only. So there is no chance to store a value with 18 digitis accurately.
x = uint64(817835078876192769)
% uint64 817835078876192769
double(x)
% 8.17835078876193e+17
uint64(double(x))
% uint64 817835078876192768
num2str(x)
% '817835078876192769'
sprintf('%d', x)
% '817835078876192769'
sprintf('%.0f', x)
% '817835078876192768'
So the problem might be, that the value is provided as double value. You need to store the value as UINT64 or as char array or string.
  2 comentarios
Martin
Martin el 6 de Mzo. de 2021
Its a double scalar yes. So there is nothing to be done in this case you think?
Jan
Jan el 6 de Mzo. de 2021
It depends on what "from API" means. From which API?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by