什么浮点数是合法的

如题所述

合法的浮点数有两种表示形式:

    十进制小数形式。他有数字和小数点组成,必须有小数点。例如(123.)(123.0)(.123)。

    指数形式。如123e3。字母e(或E)之前必须有数字,e后面的指数必须为整数。

    规范化的指数形式里面,小数点前面有且只有一位非零的数字。如1.2345e8

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-23
怎样的浮点数是合法的
符合IEEE-754规定的浮点数才是合法的。目前大多数高级语言(包括C)都按照IEEE-754标准来规定浮点数的存储格式。IEEE-754标准规定了三种浮点数格式:单精度、双精度、扩展精度.本次只讨论前两种,浮点型的表示方法如下: 浮点数中尾数用原码或补码表示,阶码用补码或移码表示。 ★ 单精度:N共32位,其中S占1位,E占8位,M占23位。★ 双精度:N共64位,其中S占1位,E占11位,M占52位。
第2个回答  2019-12-23
符合IEEE-754规定的浮点数才是合法的。目前大多数高级语言(包括C)都按照IEEE-754标准来规定浮点数的存储格式。IEEE-754标准规定了三种浮点数格式:单精度、双精度、扩展精度.本次只讨论前两种,浮点型的表示方法如下: 浮点数中尾数用原码或补码表示,阶码用补码或移码表示。 ★ 单精度:N共32位,其中S占1位,E占8位,M占23位。★ 双精度:N共64位,其中S占1位,E占11位,M占52位。
第3个回答  2014-04-01
楼主的原意可能是,C语言中的float,double型的内容是否合乎IEEE 754的规范,而不是输入字符串的合法性的校验,因为float不都是itoa,scanf返回的,更可能是数学函数返回的,因为浮点数表示的范围是有ieee 754限制的,而数学函数参数是无限的,所以无论参数输入是否有效的浮点数,数学函数的返回值都可能是无效的,比如对负浮点数开方sqrt(-1);1.0/0.0等表达式,返回的都是无效值。
#include<float.h>
VC可以用的_finite(double x),_isnan(x);来判断
通用的可以自己写:
isnan(double x){return x== x ;}
isfinite(double x);{return (x <= DBL_MAX && x >= -DBL_MAX); }
参考 http://www.jb51.net/article/40566.htm
第4个回答  推荐于2018-09-09
这我学过,规则好像是:
浮点数的小数点两旁至少要有数字;
② E或e的前面必须有数字,E或e的后面必须为整数,即其前后都必须有数字;
③ 每个浮点数都是双精度的。
带有E或e的数值是通常科学数值表示法的C语言写法。本回答被网友采纳