【发布时间】:2012-12-26 20:19:39
【问题描述】:
我的印象是,以这种格式声明和初始化浮点数是合法且常规的:
float someVariable = 12.502D; (or M, F does not give a compiler error).
但是我得到一个编译器错误:
double类型的文字不能隐式转换为'float'类型;使用“F”后缀来创建这种类型的文字。
C# 中的浮点数分为三种类型,对吧?
- F 或 f 表示浮点数。 (7 位有效数字)
- D 或 d 表示双精度。 (15 或 16 位有效数字)
- M 或 m 表示十进制。 (28 或 29 位有效数字)
为了修复编译器错误,我明确地转换了赋值语句:
float SomeVariable = (float) 12.525D;
在这种情况下我做对了吗?声明和初始化由 Double 或 Decimal 值组成的浮点变量的常规或正确方法是什么?
【问题讨论】:
-
为什么不按照编译器的建议使用
F?然后不需要强制转换(隐式或显式)...... -
或者,如果你想要一个
double变量,那么声明它为double SomeVariable = 12.525D;将它声明为一种类型并使用不同类型的文字是没有意义的。跨度> -
FWIW,如果您使用十进制,请注意这不是硬件支持的类型,即一切都在软件中完成,这使得它更准确但不是很快。但就像其他人说的,为什么不用 12.502f 而不是 12.502d?
标签: c# floating-point