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

28 次查看(过去 30 天)
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?

采纳的回答

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

更多回答(1 个)

Dyuman Joshi
Dyuman Joshi 2025-12-7,11:42
编辑:Dyuman Joshi 2025-12-7,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.

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by