How to format both left and right of the decimal place with sprintf?

31 Ansichten (letzte 30 Tage)
I have four numbers below:
  1. 964.155
  2. 9590.43
  3. 350.76
  4. 0.00
These numbers need to be re-formatted to the following:
  1. 0964.16 (rounded up from .155)
  2. 9590.43
  3. 0350.76
  4. 0000.00
I have tried using the following code but to but to no avail.
sprintf('%4.2f, the_number)
What do I need to change in my code?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 7 Dez. 2025 um 11:33
N = [964.155
9590.43
350.76
0.00];
fprintf('%07.2f\n', N)
0964.15 9590.43 0350.76 0000.00

Weitere Antworten (1)

Dyuman Joshi
Dyuman Joshi am 7 Dez. 2025 um 11:42
Bearbeitet: Dyuman Joshi am 7 Dez. 2025 um 11:44
Here's an approach -
y = [964.155
9590.43
350.76
0.00];
You'll have to manually round up, as sprintf() doesn't do that (See this thread - https://in.mathworks.com/matlabcentral/answers/24638-round-towards-even-in-sprintf)
z = sprintf('%07.2f\n', round(y, 2))
z =
'0964.16 9590.43 0350.76 0000.00 '
As you want a total of 7 characters to be displayed (4 before the decimal, 1 - the decimal itself and 2 after the decimal), if there aren't sufficient total characters, pad them with zero - Thus the '07' in the call.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by