SoFunction
Updated on 2025-03-05

How to use shopspring/decimal in golang to handle precision issues

There are accuracy problems when dealing with floating point numbers in Golang, and accuracy problems can cause a lot of trouble. Therefore, we need to use high-precision numbers to solve this problem. The shopspring/decimal library is a library specially designed for processing high-precision numbers, supporting multiple precision, four-point calculations, comparison and other operations. This article will explain how to use the shopspring/decimal library in Golang to handle high-precision numbers.

Install shopspring/decimal

Use the following command to install shopspring/decimal:

go get /shopspring/decimal

Create a Decimal object

Use the following code to create a Decimal object:

import "/shopspring/decimal"
 
// Create a Decimal objectnum := (1.23)

In the above code, we use the method to create a Decimal object, which takes a float64 parameter and returns a Decimal object.

Four operations of Decimal objects

The shopspring/decimal library supports addition, subtraction, multiplication and division of Decimal objects. Examples are as follows:

import "/shopspring/decimal"
 
// Create two Decimal objectsa := (1.23)
b := (4.56)
 
// Additionc := (b)
(c) // Output: 5.79 
// Subtractionc = (b)
(c) // Output: -3.33 
// Multiplicationc = (b)
(c) // Output: 5.6088 
// Divisionc = (b)
(c) // Output:0.26973684210526316

In the above code, we create two Decimal objects a and b, and then use Add, Sub, Mul and Div methods to perform addition, subtraction, multiplication and division.

Comparison of Decimal objects

The shopspring/decimal library supports comparison operations of Decimal objects, as shown below:

import "/shopspring/decimal"
 
// Create two Decimal objectsa := (1.23)
b := (4.56)
 
// Compare sizeif (b) < 0 {
    ("a < b")
} else if (b) == 0 {
    ("a = b")
} else {
    ("a > b")
}

In the above code, we create two Decimal objects a and b, and then use the Cmp method to compare their sizes.

Set the accuracy of the Decimal object

The shopspring/decimal library supports setting the accuracy of Decimal objects, as shown below:

import "/shopspring/decimal"
 
// Create a Decimal object and set the accuracy to 4a := (1.23456789, -4)
(a) // Output: 1.2346

In the above code, we use the method to create a Decimal object and set its precision to 4.

Summarize

The shopspring/decimal library is a very convenient library for handling high-precision numbers. It supports multiple precision, four-point calculations, comparison and other operations. Using the shopspring/decimal library in Golang can effectively avoid the trouble caused by floating point accuracy problems. In actual development, if you need to deal with high-precision numbers, you can give priority to using the shopspring/decimal library.

Complete code example:

package main
 
import (
    "fmt"
    "/shopspring/decimal"
)
 
func main() {
    // Create a Decimal object    num := (1.23)
    (num) // Output: 1.23 
    // Create two Decimal objects    a := (1.23)
    b := (4.56)
 
    // Addition    c := (b)
    (c) // Output: 5.79 
    // Subtraction    c = (b)
    (c) // Output: -3.33 
    // Multiplication    c = (b)
    (c) // Output: 5.6088 
    // Division    c = (b)
    (c) // Output: 0.26973684210526316 
    // Compare size    if (b) < 0 {
        ("a < b")
    } else if (b) == 0 {
        ("a = b")
    } else {
        ("a > b")
    }
 
    // Create a Decimal object and set the accuracy to 4    a = (1.23456789, -4)
    (a) // Output: 1.2346}

This is the article about how to use shopspring/decimal in golang to deal with accuracy issues. For more related golang shopspring/decimal precision content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!