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

28 views (last 30 days)
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?

Accepted Answer

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

More Answers (1)

Dyuman Joshi
Dyuman Joshi about 7 hours ago
Edited: Dyuman Joshi about 7 hours ago
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.

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!