首頁 > 後端開發 > C++ > 為什麼 C# 中 10 * 0.69 不等於 6.9?

為什麼 C# 中 10 * 0.69 不等於 6.9?

DDD
發布: 2025-01-10 08:48:41
原創
835 人瀏覽過

Why is 10 * 0.69 not exactly 6.9 in C#?

C# 乘法中的浮點精確度問題

讓我們檢查一下 C# 程式碼片段:

<code class="language-csharp">double i = 10 * 0.69;</code>
登入後複製

雖然您預期 i 等於 6.9,但實際輸出通常是 6.8999999999999995。這種差異是由 .NET 框架內浮點運算的固有限制所引起的。

浮點數與十進制數不同,是使用二進位格式表示的。 這種二進位表示法意味著某些十進制值,包括那些具有無限重複小數部分的值(例如 0.69),無法完美地表示。相反,它們是近似值。

編譯器意識到了這個限制,經常透過直接儲存 6.9 的近似值來最佳化計算,而不是在運行時計算 10 * 0.69。 這種近似解釋了觀察到的細微差異。

為了獲得更高的準確性,特別是在金融應用程式中,請考慮使用 decimal 資料類型。 decimal 採用以 10 為基數的表示形式,提供更精確的十進制數表示,例如 0.69,從而最大限度地減少與二進制浮點運算相關的捨入誤差。

以上是為什麼 C# 中 10 * 0.69 不等於 6.9?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板