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

1 Answer

0 votes
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
         
*/

 



answered 18 hours ago by avibootz
edited 18 hours ago by avibootz

Related questions

...