当我这样做时:
float x = float.MaxValue;
我有结果:3.40282347E+38
什么是 E+38?没有这个符号我怎么能代表最大数量?
msdn 说范围:±1.5 × 10^−45 到 ±3.4 × 10^38,但这对我没有帮助。
当我这样做时:
float x = float.MaxValue;
我有结果:3.40282347E+38
什么是 E+38?没有这个符号我怎么能代表最大数量?
msdn 说范围:±1.5 × 10^−45 到 ±3.4 × 10^38,但这对我没有帮助。
“E+38”格式是默认格式。如果您想查看整数,请指定其他格式,如下所示:
float.MaxValue.ToString("#")
这将导致:
340282300000000000000000000000000000000
以下是一些其他格式:http: //msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx
这称为E-Notation(指数表示法),与科学记数法一起使用。
因为像 10^7 这样的上标指数不能总是方便地显示,所以字母 E 或 e 通常用于表示乘以 10 的次方(可以写为“x 10^b”),然后是指数的值。
因此,3.40282347E+38
等于3.40282347 * 10
38
并且将被读取为“3.40282347 乘以 10 的 38 次方”。
试试下面的代码:
float f = float.MaxValue;
Console.WriteLine("Origianl Value: " + f);
Console.WriteLine("With Zeros:" + f.ToString("0"));
价值
Origianl Value: 3.402823E+38
With Zeros:340282300000000000000000000000000000000
那是科学记数法。
5E+2 =
5 x 10 ^ 2 =
5 x 10 * 10 =
5 * 100 =
500
换句话说,这就是你移动小数点的多少位来计算结果。取 5,将其移动 2 位,最终得到 500。在您的示例中,您需要取您的数字,3.40282347
并将小数位移动 38 次以上!
3.4e38 是 3.4 * 10^38 或 340000000000 ...(37 个零)
附加信息:
http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.71).aspx
大约是。340 000 000 000 000 000 000 000 000 000 000 000 000
如果你使用 Dan 的代码,你会得到这样的结果:
340282300000000000000000000000000000000
老问题,但这是字符串格式的最小值和最大值。
Using float.Parse
-340282356779733642999999999999999999999 to 340282356779733642999999999999999999999
Using float.MinValue.ToString("#") and float.MaxValue.ToString("#")
-340282300000000000000000000000000000000 to 340282300000000000000000000000000000000
Using float.MinValue.ToString() and float.MaxValue.ToString()
-3.402823E+38 to 3.402823E+38
很抱歉破坏了一个旧线程,但谷歌把我带到了这里,我没有找到满意的答案。我相信谷歌会在这里带领其他人。
float.h 库包括 c 中 float 和其他的最大值。FLOAT_MAX等于340282346638528859811704183484516925440,即float可以存储的最大值。
我不是 C 方面的专家,但我想这个值是通用的,并且不依赖于 x32 或 x64 操作系统。
显示float.MaxValue
使用的答案ToString
不正确。
这些答案状态float.MaxValue
是:
var f1 = 340282300000000000000000000000000000000f;
这只是 C# 转换float.MaxValue
为字符串时产生的内容。
然而,float.MaxValue
定义System.Single
为3.40282347E+38F
所以实际的答案是:
var f2 = 340282347000000000000000000000000000000f;
另请注意,编译缺陷将允许将高于此的常量值用作浮点数。但是在编译时,C# 会将这些值截断为float.MaxValue
. 例如:
var f3 = 340282356699999999999999999999999999999f;
var f4 = 340282356760000000000000000000000000000f;
var f5 = 340282356779733661637539395458142568447.9f;
这里 f5 ( 340282356779733661637539395458142568447.9f
) 是您可以定义的实际最大常数。同样,这被截断为float.MaxValue
.
这都可以验证:
var equals_1 = f1 == f; // false
var equals_2 = f2 == float.MaxValue; // true
var equals_3 = f3 == float.MaxValue; // true
var equals_4 = f3 == float.MaxValue; // true
var equals_4 = f5 == float.MaxValue; // true
不带指数的最大浮点数为:340282356779733661637539395458142568447.9f