Using string() on double values without automatic rounding?

Hello,
When i use string() with double values, the number is converted to a string where the number is rounded to four decimals, even when there are more decimals in the original double value. Image:
I am currently writing a conversion script where i need the extra decimals. Is it possible to disable this automatic rounding?
Thank you.

 Respuesta aceptada

Matt J
Matt J el 8 de Mayo de 2023
even when there are more decimals in the original double value
There are no more decimals in the original double value. A double value can only have 15 digits of precision.

3 comentarios

Sondre
Sondre el 8 de Mayo de 2023
Editada: Sondre el 8 de Mayo de 2023
I'm not sure im following? If I understand correctly, a double value can have 15 decimal places of precision. Even with numbers with less than 15 digits in total the problem is still there:
Meaning that the string() function rounds to four decimals. My question is wether it is possible to do this double->string conversion without this rounding.
I hope i have made myself more clear, sorry if my initial formulation was off.
Matt J
Matt J el 8 de Mayo de 2023
Editada: Matt J el 8 de Mayo de 2023
You could use num2str,
string( num2str(123.123123123,'%.9f') )
ans = "123.123123123"
Thanks!

Iniciar sesión para comentar.

Más respuestas (1)

Rather than slow NUM2STR and then STRING, for a scalar the simpler and more efficient approach is to just call SPRINTF:
sprintf("%.9f",123.123123123)
ans = "123.123123123"
For non-scalar values use COMPOSE:

Categorías

Más información sobre Characters and Strings en Centro de ayuda y File Exchange.

Productos

Versión

R2022b

Etiquetas

Preguntada:

el 8 de Mayo de 2023

Respondida:

el 9 de Mayo de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by