当我这样做时:
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-表示法(指数表示法),通常与科学计数法一起使用。
来自维基百科上有关科学计数法中的E表示法部分:
由于类似于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
That is Scientific Notation.
5E+2 =
5 x 10 ^ 2 =
5 x 10 * 10 =
5 * 100 =
500
3.40282347
向左移动38个十进制位!不带指数的浮点数的最大值为:340282356779733661637539395458142568447.9f
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。
如果您使用丹的代码,您将得到此结果:
340282300000000000000000000000000000000
展示使用 ToString
显示 float.MaxValue
的回答是不正确的。
这些答案声明 float.MaxValue
为:
var f1 = 340282300000000000000000000000000000000f;
这只是 C# 将 float.MaxValue
转换为字符串时产生的结果。
然而,float.MaxValue
在 System.Single
中的定义为 3.40282347E+38F
。
因此,实际的答案是:
var f2 = 340282347000000000000000000000000000000f;
还要注意的是,编译错误将允许使用高于此值的常量值作为 float。但是,在编译时,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
抱歉打扰了一个旧帖子,但是谷歌引导我来到这里,我没有找到令人满意的答案。我相信谷歌会引导其他人来到这里。
float.h库包括c中float和其他类型的最大值。FLOAT_MAX等于340282346638528859811704183484516925440,即float可以存储的最大值。
我不是C语言专家,但我想象这个值是通用的,不会依赖于x32或x64操作系统。
FLT_MAX
-- 而不是 FLOAT_MAX
-- 实际上会因系统或编译器而异,尽管它至少为 1E+37。
(b) 这个问题是关于 C#,而不是 C。 - Paul Roub这是一个老问题,但以下是字符串格式的最小值和最大值。
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