Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,895 questions

51,826 answers

573 users

How to replace a digit in a floating-point number by index with Go

1 Answer

0 votes
package main

import (
    "errors"
    "fmt"
    "strconv"
)

// replaceFloatDigit replaces a digit at a given position in a floating-point number.
// number: the float64 input
// position: 0-based index in the string representation
// newDigit: the replacement character (must be '0'–'9')
func replaceFloatDigit(number float64, position int, newDigit rune) (float64, error) {
    // Validate that newDigit is indeed a single digit
    if newDigit < '0' || newDigit > '9' {
        return 0, errors.New("replacement must be a digit (0-9)")
    }

    // Convert number to string with fixed precision (10 decimal places)
    strNum := fmt.Sprintf("%.10f", number)

    // Validate position
    if position < 0 || position >= len(strNum) {
        return 0, errors.New("position is out of range for the number string")
    }

    // Ensure position points to a digit
    if strNum[position] == '.' || strNum[position] == '-' {
        return 0, errors.New("position points to a non-digit character")
    }

    // Replace digit
    // Strings in Go are immutable, so we convert to a slice of runes
    runes := []rune(strNum)
    runes[position] = newDigit
    modified := string(runes)

    // Convert back to float
    result, err := strconv.ParseFloat(modified, 64)
    if err != nil {
        return 0, errors.New("conversion failed")
    }

    return result, nil
}

func main() {
    num := 89710.291
    pos := 2          // 0-based index
    newDigit := '8'   // rune literal for digit '8'

    // Call the function and handle errors
    result, err := replaceFloatDigit(num, pos, newDigit)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    // Print result with 3 decimal places
    fmt.Printf("Modified number: %.3f\n", result)
}



/*
run:

Modified number: 89810.291

*/

 



answered Nov 17, 2025 by avibootz
...