簡體   English   中英

== 在 C# 中的浮點數和小數點之間

[英]== between float and decimal in C#

static void Main()
{
     int a=10;
     Console.WriteLine(Convert.ToSingle(a)==Convert.ToDecimal(a));
}

為什么這段代碼會拋出錯誤

== 不能應用於 float 和 decimal 類型的操作數

即使兩個轉換語句都返回 10?

就像下面一樣。

bool Compare<T>(T x, T y) where T : class
{
    ...
}

所以xy應該是相同的數據類型。 那么只有它可以比較。 十進制是 128 位,單是 32 位。

Decimal 是Decimal 浮點數, Double 是Binary floating point

還有 Convert.ToSingle():大小 - 4 字節精度 -7 位

decimal.ToSingle():大小 - 16 字節精度 -28-29 位小數

盡管他們可能會在展示時給出相同的 output。 在內部它們是不一樣的。

float 和 double 是浮點二進制點類型,而 decimal 是浮點小數點類型

有趣的文章https://zetcode.com/lang/csharp/datatypes/ 在此處輸入圖像描述

ToSingle()代表浮點數, ToDecimal()代表 Double 值,這就是精度匹配的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM