package main
import (
"fmt"
"math"
)
/*
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"
*/
func formatDecimalWithZeros(num float64, width int, decimals int) string {
// Split into integer and fractional parts
integer_part := int(math.Trunc(num))
fractional_part := num - float64(integer_part)
// Format integer part with leading zeros
int_str := fmt.Sprintf("%0*d", width, integer_part)
// Format fractional part (starts with "0.xxx")
frac_str := fmt.Sprintf("%.*f", decimals, fractional_part)
// Remove the leading "0" before the decimal point
return int_str + frac_str[1:]
}
func main() {
num := 3.14159
result := formatDecimalWithZeros(num, 5, 5)
fmt.Printf("Original number: %.5f\n", num)
fmt.Println("Formatted string:", result)
}
/*
run:
Original number: 3.14159
Formatted string: 00003.14159
*/