c#中float类型的最大值

时间:2012-08-08 04:47:19

标签: c#

当我这样做时:

float x = float.MaxValue;

我的结果是:3.40282347E + 38

什么是E + 38?如何在没有此符号的情况下表示最大数量?

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

10 个答案:

答案 0 :(得分:26)

“E + 38”格式是默认格式。如果您想查看整数,请指定不同的格式:

float.MaxValue.ToString("#")

这将导致:

340282300000000000000000000000000000000

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

答案 1 :(得分:11)

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

来自E Notation section of the Wikipedia article on Scientific Notation

  

因为像10 ^ 7这样的超级脚本指数并不总是如此   方便地显示,字母E或e通常用于表示   十次提升到的力量(写成“x 10 ^ b”)   然后是指数的值。

因此,3.40282347E+38等于3.40282347 * 10 38 ,并且会被读作“3.40282347乘以10到38的幂”。

答案 2 :(得分:5)

请尝试以下代码:

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

Origianl Value: 3.402823E+38
With Zeros:340282300000000000000000000000000000000

答案 3 :(得分:2)

那是Scientific Notation

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

换句话说,就是移动小数点以计算结果的小数位数。取5,将它移动2个位置,最后得500.在你的例子中,你需要取你的数字3.40282347并将小数位移38次!

答案 4 :(得分:1)

这是约。 340 000 000 000 000 000 000 000 000 000 000 000 000 000

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

340282300000000000000000000000000000000

答案 5 :(得分:0)

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

其他信息:

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

答案 6 :(得分: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

答案 7 :(得分:0)

无指数浮点数最大为:340282356779733661637539395458142568447.9f

答案 8 :(得分:0)

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

这些答案说明 float.MaxValue 是: var f1 = 340282300000000000000000000000000000000f;

这只是 C# 在将 float.MaxValue 转换为字符串时产生的结果。

然而,float.MaxValueSystem.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

答案 9 :(得分:-2)

很抱歉,死了一个旧线程,但是google将我引到了这里,但我没有找到满意的答案。我确定Google会带领这里的其他人。

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

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