Using fprintf, how to print 1.234D+02 instead of 1.234E+02?

1 visualización (últimos 30 días)
Tian
Tian el 5 de En. de 2017
Editada: Walter Roberson el 6 de En. de 2017
I'd like to print scientific notations into a file, in the format of FORTRAN. For example, I want to print 1.234D+02 instead of 1.234E+02 into the file. How to realize it? Thank you all~
  2 comentarios
Stephen23
Stephen23 el 5 de En. de 2017
fprintf only supports e or E.
You will have to either replace the characters after writing the file, or use sprintf and replace the characters before writing the file.
Tian
Tian el 6 de En. de 2017
Thank you~ Trying sprintf

Iniciar sesión para comentar.

Respuesta aceptada

José-Luis
José-Luis el 5 de En. de 2017
Editada: José-Luis el 5 de En. de 2017
EDIT
As said before, Stephen's answer is the way to go and I had previously posted an erroneous answer. Second try:
mag = @(x) floor(log10(abs(x)));
val = @(x) x./10.^mag(x);
x = [-25, -0.0001, 0, 0.00025, 1.005, 15, 12345];
leftVal = val(x);
leftVal(isnan(leftVal)) = 0;
rightVal = mag(x);
rightVal(rightVal == -Inf | rightVal == Inf) = 0;
sprintf('%.3fD%+03d\n',[leftVal;rightVal])
  4 comentarios
Tian
Tian el 6 de En. de 2017
Thank you for your advice, I want to print numbers
Walter Roberson
Walter Roberson el 6 de En. de 2017
Editada: Walter Roberson el 6 de En. de 2017
S = sprintf('%.3e',YourNumber)
S(S=='e') = 'D' ;

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Software Development Tools en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by