簡體   English   中英

C#:隱式將double轉換為float?

[英]C#: implicitly convert double to float?

我知道在C#中默認不允許從double到float的隱式轉換,但是有什么方法可以啟用此類轉換? 帶有某種實用性嗎? 我不擔心精度不足(因為我的應用程序在任何地方都不需要浮點數精度),而且總是不得不確保將所有十進制值明確聲明為浮點數,否則我就煩惱了,否則我會遇到編譯錯誤。

不,你不能。 由於這種轉換可能會導致精度損失,並且編譯器無法確定是否進行轉換,因此您必須明確地說出您知道轉換。

我不確定“將小數明確聲明為浮點數”是什么意思,但是如果您現在不知道,則可以通過在末尾添加f來判斷文字是浮點數

float a = 0.0;  // Wrong, implicit conversion.
float b = 0.0f; // OK. Can also be capital 'F'.

但是,如果您抱怨到處都增加一個字母,那很抱歉,答案是否定的,您不能解決這個問題。

不,沒有任何方式可以進行隱式轉換,但是您可以這樣做:

double a = 0.123456789123456789d;
float b = (float)a;
float c = Convert.ToSingle(a);
bool areBothSame = b == c;
Console.WriteLine("b == c: "areBothSame);
//Console Output:
//b == c: true

Convert.ToSingle()的作用是:

public static float ToSingle(double value)
{
    return (float)value;
}

因此,並沒有真正滿足您的喜好,而是完成了相同的工作。

暫無
暫無

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

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