C#中的float是CTS(Common Type System)的System.Single的别名。在VB.NET中,同样的数据类型就命名为Single.有用户发现下面这条指令: Console.WriteLine(1000.09009F.ToString("F5")); 得到的结果是1000.09000而不是显而易见的1000.09009.为什么?
原因是System.Single的精度有限,是7位有效数字。在这样的精度范畴里面,上面的输出结果是正确的。如果需要更高的精度,可以考虑 System.Double或者Decimal.
参考:Decimal Constructor (Single); Single Structure.
贴子以"现状"提供且没有任何担保也没有授予任何权利。
打印 | 张贴于 2004-04-15 06:51:00 | Tag:FCL | 库函数
留言反馈
不知道是不是这样的,写个例子:
public class test{
public static void Main(string[] arg){
//Console.WriteLine("s={0}",s);
float a=float.Parse("67108863");
float a=float.Parse("67108862");
Console.WriteLine("a={0}",(int)a);
Console.WriteLine("b={0}",(int)b);
}
}
结果都是67108864
<br/>
е?и? <br/>
<br/>
??¾?в???????ÿ?ССô?...2^-1 + 2^-2 + 2^-3 <br/>
<br/>
singledouble??ÿ?λ?????0.7...
我不知道确切的原因是什么。
Console.Writeline(f);
得到1.686761E+07
这个结果符合我们已经知道的float的7位有效数字。
(2) System.Single(即float)和System.Int32(即int)都是使用4个字节来表示数。但是前者需要涵盖小数,自然精度不如int。int能表示10位有效数字。
所以就是根据实际选择合适的数据类型。
int i = int.Parse("16867611");
结果:f=16867612,i=16867611
要float何用。。。。
VB.NET中Float?