How to express a decimal number as a fixed-length string with leading zeros in Ruby

1 Answer

0 votes
# 
#     format_decimal_with_zeros
#     -------------------------
#     Converts a floating‑point number into a fixed‑length string with
#     leading zeros on the integer part.
#
#     Parameters:
#         num          - the decimal number to format
#         width        - total width of the integer part (zero‑padded)
#         decimals     - number of digits after the decimal point
#
#     Returns:
#         A formatted string such as "00003.14159"
#
#     Example:
#         num = 3.14159, width = 5, decimals = 5
#         Output → "00003.14159"
#
def format_decimal_with_zeros(num, width, decimals)

    # Split into integer and fractional parts
    integer_part = num.to_i
    fractional_part = num - integer_part

    # Format integer part with leading zeros
    int_str = sprintf("%0#{width}d", integer_part)

    # Format fractional part (starts with "0.xxx")
    frac_str = sprintf("%.#{decimals}f", fractional_part)

    # Remove the leading "0" before the decimal point
    int_str + frac_str[1..]
end

num = 3.14159

result = format_decimal_with_zeros(num, 5, 5)

puts "Original number: #{sprintf('%.5f', num)}"
puts "Formatted string: #{result}"



=begin
run:
             
Original number: 3.14159
Formatted string: 00003.14159
         
=end

 



answered 18 hours ago by avibootz

Related questions

...