#
# 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