Maison  >  Article  >  développement back-end  >  Comment le golang représente-t-il l’argent ?

Comment le golang représente-t-il l’argent ?

PHPz
PHPzoriginal
2023-05-10 11:35:071247parcourir

En golang, pour représenter l'argent on peut utiliser float64 ou une bibliothèque décimale.

  1. Utilisez float64 pour représenter de l'argent

En golang, le type à virgule flottante float64 est l'un des types numériques les plus couramment utilisés, nous pouvons utiliser il représente l'argent. Si vous n’avez besoin que d’effectuer des calculs et des comparaisons de base, utiliser float64 est un bon choix. Par exemple :

var price float64 = 19.99
var total float64 = price * 2
fmt.Println(total) // 39.98

Dans l'exemple ci-dessus, nous déclarons un prix variable de type float64 et l'initialisons à 19,99. Ensuite, nous avons calculé le prix total en utilisant le prix * 2 et attribué le résultat au total. Enfin, nous imprimons la valeur du total, qui est 39,98.

Cependant, il convient de noter que les nombres à virgule flottante ont des problèmes de précision. Par exemple :

var price float64 = 0.1
var total float64 = price * 0.2
fmt.Println(total) // 0.020000000000000004

Dans l'exemple ci-dessus, nous déclarons un prix variable de type float64 et l'initialisons à 0,1. Ensuite, nous avons calculé le prix total en utilisant le prix * 0,2 et attribué le résultat au total. Enfin, nous imprimons la valeur du total et le résultat est 0,020000000000000004. Cela est dû au problème de précision des nombres à virgule flottante. Par conséquent, lorsqu'il s'agit d'argent, il est recommandé d'utiliser la bibliothèque décimale avec une plus grande précision.

  1. Utilisez la bibliothèque décimale pour représenter l'argent

La bibliothèque décimale de Golang offre une plus grande précision, ce qui peut efficacement éviter la précision causée par les questions sur les nombres à virgule flottante. pour mieux représenter l'argent. Par exemple :

import "github.com/shopspring/decimal"

func main() {
    price := decimal.NewFromFloat(19.99)
    total := price.Mul(decimal.NewFromInt(2))
    fmt.Println(total) // 39.98
}

Dans l'exemple ci-dessus, nous avons utilisé la bibliothèque décimale et cité sa méthode Mul() pour calculer le prix total. Nous utilisons également la méthode NewFromFloat() et la méthode NewFromInt() pour créer des variables de type décimal. La valeur du résultat est une valeur décimale, qui équivaut à la précision numérique de 10 à la puissance 24, de sorte que la précision peut être garantie de ne pas être affectée.

Summary

En golang, nous pouvons utiliser float64 ou une bibliothèque décimale pour représenter l'argent. Si vous n’avez besoin que d’effectuer des calculs et des comparaisons de base, utiliser float64 est un bon choix. Cependant, il est important de noter que les nombres à virgule flottante présentent des problèmes de précision. Si une plus grande précision est requise, l’utilisation de la bibliothèque décimale est un meilleur choix. Lorsque vous traitez de l'argent, portez une attention particulière aux problèmes d'exactitude afin d'éviter les erreurs dues à des problèmes d'exactitude.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn