社区
C#
帖子详情
float.Parse("99999999")结果为100000000,float最大能表示的整数是多少?
mademelaugh
2008-01-29 02:53:08
rt
...全文
1456
8
打赏
收藏
float.Parse("99999999")结果为100000000,float最大能表示的整数是多少?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lineloveqq
2008-06-22
打赏
举报
回复
最后回复的的确是好文啊……
Q_282898034
2008-01-29
打赏
举报
回复
float 关键字表示存储 32 位浮点值的简单类型。下表显示了 float 类型的精度和大致范围。
类型 大致范围 精度 .NET Framework 类型
float
±1.5 × 10-45 to ±3.4 × 1038
7 位
System.Single
标识符
默认情况下,赋值运算符右侧的实数被视为 double。因此,应使用后缀 f 或 F 初始化浮点型变量,如下所示:
复制代码
float x = 3.5F;
如果在以上声明中不使用后缀,则会因为您试图将一个 double 值存储到 float 变量中而发生编译错误。
转换
可在一个表达式中兼用数值整型和浮点型。在此情况下,整型将转换为浮点型。根据以下规则计算表达式:
如果其中一个浮点型为 double,则表达式的计算结果为 double 类型,在关系表达式或布尔表达式中为 bool 类型。
如果表达式中不存在 double 类型,则表达式的计算结果为 float 类型,在关系表达式或布尔表达式中为 bool 类型。
浮点表达式可以包含下列值集:
正零和负零
正无穷和负无穷
非数字值 (NaN)
有限的非零值集
有关这些值的更多信息,请参考“二进制浮点算法的 IEEE 标准”,该标准可在网站 http://www.ieee.org/ 上获得。
=================================================
Single 值类型表示一个值
介于 -3.402823e38 和 +3.402823e38 之间
的单精度 32 位数字,以及正零或负零、PositiveInfinity、NegativeInfinity 和非数字 (NaN)。
Single 符合二进制浮点算法的 IEC 60559:1989 (IEEE 754) 标准。
Single 为比较此类型的实例,将实例的值转换为它的字符串表示形式以及将数字的字符串表示形式转换为此类型的实例提供了相应的方法。有关格式规范代码如何控制值类型的字符串表示形式的信息,请参见 格式化概述、标准数字格式字符串 和 自定义数字格式字符串。
使用浮点数
在执行二进制运算时,如果一个操作数为浮点类型(Single 或 Double),那么另一个操作数应当为整数类型或浮点类型。此运算计算如下:
如果其中一个操作数为整数类型,那么该操作数将被转换为另一个操作数所属的浮点类型。
然后,如果任意一个操作数为 Double,则另一个操作数将被转换为 Double,并且至少使用 Double 的范围和精度执行运算。对于数值运算,结果的类型为 Double。
否则,将至少使用 Single 类型的范围和精度执行运算,而且对于数值运算,结果的类型为 Single。
浮点运算符(包括赋值运算符)不会引发异常。在异常情况下,浮点运算的结果为零、无穷或 NaN,如下所述:
如果浮点运算的结果对于目标格式来说太小,则运算的结果为零。
如果浮点运算结果的数值对于目标格式来说太大,则运算的结果为 PositiveInfinity 或 NegativeInfinity(具体取决于结果的符号)。
如果浮点运算无效,则运算的结果为 NaN。
如果浮点运算的一个或两个操作数为 NaN,则运算的结果为 NaN。
请记住,浮点数只能近似于十进制数字,浮点数的精度决定了浮点数近似于十进制数字的精确程度。默认情况下,Single 值只包含 7 位精度,但内部维护的最大精度是 9 位。浮点数的精度有几种结果:
特定精度下看似相等的两个浮点数可能并不相等,因为它们的最小有效位数不同。
由于浮点数可能无法精确近似于十进制数,如果使用十进制数,则使用浮点数的数学或比较运算可能不会产生相同的结果。
如果涉及浮点数,值可能不往返。值的往返是指,某个运算将原始浮点数转换为另一种格式,而反向运算又将转换后的格式转换回浮点数,且最终浮点数与原始浮点数相等。由于一个或多个最低有效位在转换中丢失或更改,往返可能失败。
mademelaugh
2008-01-29
打赏
举报
回复
有没有什么转换方法可以避免这种精度损失?
tds__609
2008-01-29
打赏
举报
回复
float ±1.5 × 10-45 到 ±3.4 × 1038
http://msdn2.microsoft.com/zh-cn/library/b1e65aza(VS.80).aspx
TNT_1st_excellence
2008-01-29
打赏
举报
回复
也有说取值范围是-3.4*10(-38)~3.4*10(38)
yuan731
2008-01-29
打赏
举报
回复
mark
TNT_1st_excellence
2008-01-29
打赏
举报
回复
float类型通常32位,取值范围是10-38~10+38
he_8134
2008-01-29
打赏
举报
回复
浮点有误差~~
C#
float
.
Parse
解析字符串出现异常: FormatException : Input string was not in a correct format.
C#
float
.
Parse
解析字符串出现异常: FormatException : Input string was not in a correct format.
C# 德语法语解析浮点数不正确的问题记录
今天查Bug的时候,发现一个玩家登录不上去,一个游戏里镜头乱飞,表现不正常。对于法语来说,
float
.
parse
(1.5)这种方法会报错,因为法语环境下,小数是靠逗号分隔的,这个直接报错了也就还好。在德语环境下,不会报错,但是小数点会被忽略。所以只是数值不正常,这个就难查了。不要在表格里配置小数。都配置
整数
,再除以10000什么的。只是记录一下,原来没有往这个方面想过,踩过坑也就知道了。虽然他说的时候就这一句话,而且跟这个报错没什么关系。只是突然想起了之前一个同事给我说的一句话。但今天想想,还是浑身一抖。
Float
.
parse
Float
()函数的应用
函数介绍 static
float
parse
Float
(String s) Returns a new
float
initialized to the value represented by the specified String, as performed by the valueOf method of class
Float
.
parse
Float
可用性 ...
C#中Convert.ToInt32() 和 int.
Parse
()的区别
`int.
Parse
()`:如果字符串无法成功转换为
整数
类型,`int.
Parse
()` 方法会引发 `FormatException` 异常。- `Convert.ToInt32()`:如果字符串无法成功转换为
整数
类型,`Convert.ToInt32()` 方法会返回 0。而 `int.
Parse
()` 方法则更适用于确切的字符串输入,并且对于转换失败会引发异常的情况。如果尝试将其他类型的值传递给 `int.
Parse
()`,将会引发 `FormatException` 异常。
float
的精度问题
今天发现了一个有意思的问题,用
float
.
Parse
("-0.03"); 得到的
float
型数据是-0.03,但是乘上100赋值给一个
整数
就成了-2.
float
fval =
float
.
Parse
("-0.03"); int ival = (int)(fval*100); 如果使用double就没问题。在64位的win7系统上也没问题。
C#
111,120
社区成员
642,537
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章