21

当我这样做时:

float x = float.MaxValue;

我有结果:3.40282347E+38

什么是 E+38?没有这个符号我怎么能代表最大数量?

msdn 说范围:±1.5 × 10^−45 到 ±3.4 × 10^38,但这对我没有帮助。

4

10 回答 10

34

“E+38”格式是默认格式。如果您想查看整数,请指定其他格式,如下所示:

float.MaxValue.ToString("#")

这将导致:

340282300000000000000000000000000000000

以下是一些其他格式:http: //msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

于 2012-08-08T04:52:23.453 回答
13

这称为E-Notation(指数表示法),与科学记数法一起使用。

来自维基百科关于科学记数法的文章的 E 表示法部分

因为像 10^7 这样的上标指数不能总是方便地显示,所以字母 E 或 e 通常用于表示乘以 10 的次方(可以写为“x 10^b”),然后是指数的值。

因此,3.40282347E+38等于3.40282347 * 1038并且将被读取为“3.40282347 乘以 10 的 38 次方”。

于 2012-08-08T04:53:01.500 回答
6

试试下面的代码:

float f = float.MaxValue;
Console.WriteLine("Origianl Value: " + f);
Console.WriteLine("With Zeros:" + f.ToString("0"));

价值

Origianl Value: 3.402823E+38
With Zeros:340282300000000000000000000000000000000
于 2012-08-08T04:53:24.260 回答
3

那是科学记数法。

5E+2 = 
5 x 10 ^ 2 = 
5 x 10 * 10 = 
5 * 100 =
500

换句话说,这就是你移动小数点的多少位来计算结果。取 5,将其移动 2 位,最终得到 500。在您的示例中,您需要取您的数字,3.40282347并将小数位移动 38 次以上!

于 2012-08-08T04:53:12.660 回答
1

3.4e38 是 3.4 * 10^38 或 340000000000 ...(37 个零)

附加信息:

http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.71).aspx

于 2012-08-08T04:50:00.973 回答
1

大约是。340 000 000 000 000 000 000 000 000 000 000 000 000

如果你使用 Dan 的代码,你会得到这样的结果:

340282300000000000000000000000000000000
于 2012-08-08T04:52:26.623 回答
0

老问题,但这是字符串格式的最小值和最大值。

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
于 2018-12-22T09:50:17.510 回答
0

很抱歉破坏了一个旧线程,但谷歌把我带到了这里,我没有找到满意的答案。我相信谷歌会在这里带领其他人。

float.h 库包括 c 中 float 和其他的最大值。FLOAT_MAX等于340282346638528859811704183484516925440,即float可以存储的最大值。

我不是 C 方面的专家,但我想这个值是通用的,并且不依赖于 x32 或 x64 操作系统。

于 2020-09-01T21:21:11.850 回答
0

显示float.MaxValue使用的答案ToString不正确。

这些答案状态float.MaxValue是: var f1 = 340282300000000000000000000000000000000f;

这只是 C# 转换float.MaxValue为字符串时产生的内容。

然而,float.MaxValue定义System.Single3.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
于 2021-05-14T05:30:43.890 回答
0

不带指数的最大浮点数为:340282356779733661637539395458142568447.9f

于 2021-05-14T02:21:39.927 回答