Comment lire et stocker les valeurs monétaires en C

Je voulais savoir quel est le meilleur moyen de lire et d’enregistrer les valeurs monétaires en C telles que 11.22.

J’ai essayé de scan("%f", &num) , mais j’obtiens des valeurs aléatoires à la fin du float.

Est-il possible de ne lire que jusqu’à la deuxième décimale?

Si j’ajoute ces chiffres, ils ne sont pas exacts. comme il arrondit pour une raison quelconque. Ajouter 11.22 + 22.33 est préférable à 11.220000 + 22.330000, car j’obtiens des valeurs aléatoires à la fin; Je ne sais pas pourquoi!

Existe-t-il un moyen de renvoyer une erreur à l’utilisateur si elle dépasse la 2e décimale et si l’utilisateur entre un caractère.

Je pensais convertir une chaîne (tableau) en une virgule flottante.

N’utilisez jamais de virgule flottante pour stocker des devises. Les nombres à virgule flottante ne peuvent représenter des dixièmes ou des centièmes , mais uniquement des rationnels diadiques, c’est-à-dire des nombres de la forme p / q où p et q sont des entiers et q est une puissance de 2. Ainsi, toute tentative de représenter des centimes autres que 0, 25, 50, ou 75 cents nécessiteront une approximation, et ces approximations se traduisent par des vulnérabilités qui peuvent être exploitées pour vous faire perdre de l’argent.

Stockez plutôt les valeurs entières en cents (ou quelle que soit la plus petite division de la devise). Lors de la lecture de valeurs formatées avec un sharepoint base, il suffit de lire les unités monétaires entières et les cents dans des champs distincts, puis de les multiplier par 100 (ou la puissance appropriée de 10) et d’append.