浮点数C#

Pow*_*der 2 c# floating-point

我认为以这种格式声明和初始化浮点数是合法和传统的:

float someVariable = 12.502D;  (or M, F does not give a compiler error).
Run Code Online (Sandbox Code Playgroud)

但是我收到编译器错误:

double类型的文字不能隐式转换为'float'类型; 使用'F'后缀来创建此类型的文字.

C#中有三种浮点数,对吧?

  1. 浮点数为F或f.(7位有效数字)
  2. D或d代表Double.(15或16位有效数字)
  3. M或m表示十进制.(28或29位有效数字)

为了修复编译器错误,我明确地使用了赋值语句:

float SomeVariable = (float) 12.525D;
Run Code Online (Sandbox Code Playgroud)

在这种情况下我做对了吗?什么是传统或正确的方法来声明和初始化由Double或Decimal值组成的浮点变量?

Met*_*Man 7

在更简洁的英语中,编译器为文本字符串12.502假定的默认类型是double.双倍是浮子大小的两倍,就像一个夸脱不能放入一个品脱,双倍不能存储在浮子中,除非你做一个演员,这可能会失去精度.

您可以通过添加F或f后缀来告诉编译器12.502实际上是一个浮点数,如下所示:

float someVariable = 12.502f;
Run Code Online (Sandbox Code Playgroud)

要么:

double someVariable = 12.502;
Run Code Online (Sandbox Code Playgroud)