How to format both left and right of the decimal place with sprintf?
28 views (last 30 days)
Show older comments
Darrian Low
on 7 Dec 2025 at 10:39
Commented: Walter Roberson
on 7 Dec 2025 at 18:43
I have four numbers below:
- 964.155
- 9590.43
- 350.76
- 0.00
These numbers need to be re-formatted to the following:
- 0964.16 (rounded up from .155)
- 9590.43
- 0350.76
- 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?
0 Comments
Accepted Answer
Walter Roberson
on 7 Dec 2025 at 11:33
N = [964.155
9590.43
350.76
0.00];
fprintf('%07.2f\n', N)
0 Comments
More Answers (1)
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))
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.
See Also
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!