<p><code>float</code> (l’alias C# pour <code>System.Single</code>) et <code>double</code> (l’alias C# pour <code>System.Double</code>) sont des types à <a href="https://csharpindepth.com/Articles/FloatingPoint">virgule flottante <em>binaire</em></a>. <code>float</code> est sur 32 bits ; <code>double</code> est sur 64 bits. Autrement dit, ils représentent un nombre comme ceci :</p>
<pre><code class="lang-auto">10001.10010110011
</code></pre>
<p>Le nombre binaire et la position de la virgule binaire sont tous deux encodés dans la valeur.</p>
<p><code>decimal</code> (l’alias C# pour <code>System.Decimal</code>) est un type à <a href="https://csharpindepth.com/Articles/Decimal">virgule flottante <em>décimale</em></a>. Autrement dit, il représente un nombre comme ceci :</p>
<pre><code class="lang-auto">12345.65789
</code></pre>
<p>Là encore, le nombre et la position de la virgule <em>décimale</em> sont tous deux encodés dans la valeur – c’est ce qui fait de <code>decimal</code> un type à virgule flottante et non un type à virgule fixe.</p>
<p>Le point important à noter est que les humains ont l’habitude de représenter les nombres non entiers sous forme décimale et s’attendent à des résultats exacts en représentation décimale ; tous les nombres décimaux ne sont pas exactement représentables en virgule flottante binaire – 0.1, par exemple – donc si vous utilisez une valeur en virgule flottante binaire, vous obtiendrez en réalité une approximation de 0.1. Vous obtiendrez également des approximations en utilisant la virgule flottante décimale – le résultat de la division de 1 par 3 ne peut pas être représenté exactement, par exemple.</p>
<p>Quant à savoir quand utiliser quoi :</p>
<ul>
<li></li>
</ul>
<p>Pour les valeurs qui sont « naturellement des décimaux exacts », il est bon d’utiliser <code>decimal</code>. Cela convient généralement pour tout concept inventé par l’homme : les valeurs financières sont l’exemple le plus évident, mais il y en a d’autres aussi. Pensez par exemple aux notes attribuées aux plongeurs ou aux patineurs artistiques.</p>
<ul>
<li></li>
</ul>
<p>Pour les valeurs qui sont davantage des artefacts de la nature et qui ne peuvent de toute façon pas être mesurées <em>exactement</em>, <code>float</code>/<code>double</code> sont plus appropriés. Par exemple, les données scientifiques seraient habituellement représentées sous cette forme. Ici, les valeurs d’origine ne seront pas « décimalement exactes » au départ, il n’est donc pas important que les résultats attendus maintiennent la « précision décimale ». Les types à virgule flottante binaire sont beaucoup plus rapides à traiter que les décimaux</p>
<p><em>(Réponse tronquée)</em></p>