Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >C中的浮点字面值是如何解释的?

C中的浮点字面值是如何解释的?
EN

Stack Overflow用户
提问于 2009-03-15 18:38:38
回答 3查看 2.4K关注 0票数 2

在C程序中,当你写一个像3.14159这样的浮点文字时,有没有标准的解释,或者它是依赖于编译器还是依赖于架构?Java是关于如何解释浮点字符串的exceedingly clear,但当我阅读K&R或其他C文档时,这个问题似乎被掩盖了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-15 18:50:55

来自C99标准的6.4.4.2节浮点常量,第3段(强调我的观点):

有效数部分被解释为(十进制或十六进制)有理数;指数部分中的数字序列被解释为十进制整数。对于十进制浮点常量,指数表示有效位部分要缩放的10的幂。对于十六进制浮点常量,指数表示有效位部分要缩放的2的幂。对于十进制浮点常量,以及当FLT_RADIX不是2的幂时的十六进制浮点常量,结果要么是最接近的可表示值,要么是与最接近的可表示值相邻的更大或更小的可表示值,以实现定义的方式选择。对于十六进制浮点常量,当FLT_RADIX是2的幂时,结果被正确舍入。

因此,您将以实现定义的方式在一个ULP中获取一个常量。回想一下,实现定义意味着实现(在本例中是C运行时)可以选择任何选项,但是这个选项必须是文档化的。因此,您可以参考libc运行时文档来了解舍入是如何发生的。

票数 4
EN

Stack Overflow用户

发布于 2009-03-15 18:43:27

它依赖于架构。这通常指的是IEEE754,但不一定。C标准(ISO 9899:1999)主要在第5.2.4.2.2节“浮点类型的特征”中讨论了这一点。

票数 5
EN

Stack Overflow用户

发布于 2009-03-15 18:53:46

您不清楚是指将浮点文字作为源代码的一部分(以便编译器解析为依赖于体系结构的二进制表示形式),还是指由库函数(如scanf()atof()strtol()strtod()strtold() )扫描的浮点文字(在运行时转换为内存中的floatdoublelong double值)。

在第一种情况下,它是ISO/IEC9899:1999 (ISO C99)的一部分,§6.4.4.2“浮点常量”。它既定义了词典,也定义了如何解释它。

在第二种情况下,库函数的行为在§7.20.1“数值转换函数”中定义。

我没有以前的标准(ANSI,1989)的硬拷贝,但我非常确定它也非常精确地定义了如何解析和转换浮点数。

如果你想知道是否有一个标准来在内存中以二进制格式表示这些值,答案是否定的。C语言的目的是接近体系结构,而不是对其施加约束。因此,内存中的表示始终依赖于体系结构。但是C标准定义了如何对浮点值执行算术运算。它遵循IEC 60559标准。在IEC标准中,它在附录F(标准)“C99 60559浮点运算”中进行了描述。实现可能实现也可能不实现此标准。如果是,它必须定义__STDC_IEC_559__预处理器名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/649090

复制
相关文章
动态路由协议之RIP协议,最古老的距离矢量协议!
RIP 英文全称:Routing Information Protocol,中文术语:**路由信息协议**,是一种**距离矢量**路由协议,用**跳数**作为路由度量。
网络技术联盟站
2022/06/02
1.7K0
动态路由协议之RIP协议,最古老的距离矢量协议!
互联网如何再定义古老的眼镜行业?
互联网正在渗透到一切行业,无论大小,不论新旧。自从13世纪意大利的修道士手工精心制作了世界上第一个助视器至今,眼镜已有800年历史。如果你戴眼镜,回忆一下,从第一次戴上近视眼镜到现在,有什么变化吗?答案应该大同小异,我的答案是:除了每次被忽悠买更贵的镜架和镜片最后发现“然而并没什么卵用”之外,前脚踏出眼镜店门槛就有一种被骗的感觉,传统眼镜行业的暴力人人皆知。2010年底成立的音米眼镜要做的就是用互联网结合SPA(等下解释)来重塑眼镜行业。 音米要做眼镜行业的ZARA优衣库 ZARA优衣库是不少互联网从业者所
罗超频道
2018/04/28
1K0
VBA解析复合文档05——读取数据流
根据前面解析得到的FAT数组、MiniFAT数组、目录信息,读取某个数据流就很简单了,只需要根据FAT数组或者MiniFAT数组构建的扇区链表,逐个扇区的去读取就可以:
xyj
2020/08/10
7650
动态读取protobuf数据
1.流程protobuf 版本3.12.1使用Importer 动态读入proto文件原型获取DescriptorPool使用Message名称获取对应的Prototype使用DynamicMessageFactory 生产Message使用Message 读取Protobuf数据2. test.proto message Test { optional string name = 1; }3.简单举例 Importer import(&tree, nullptr);
8菠萝
2022/06/09
1.2K0
pandas数据读取的问题记录
最近发现pandas的一个问题,记录一下: 有一组数据(test.txt)如下:
sladesal
2018/11/09
1.3K0
学习记录——Java读取pptx
https://time.geekbang.org/course/detail/181-118098
润森
2019/10/09
2.2K0
我眼中最好用的Android日志记录库Logger。
我刚开始学c的时候最喜欢用的就是用printf()打印信息。后来学java的时候又经常用System.out.println()这个方法。再后来学Android的时候接触到了Log工具类更是欢喜的不得了。但程序员都是懒的。后来Log敲烦了,心里总有些不爽。好在AndroidStudio提供了logt生成TAG,logd直接生成log.d()这样确实让我更爽了。 不过今天我介绍一款非常有名的开源库logger。
Frank909
2022/05/10
4K0
我眼中最好用的Android日志记录库Logger。
用户代码未处理MetadataException
最近在用EF搭框架的过程中,遇到了很多问题,大部分都是出现在配置文件中,比如说下面这个问题:
全栈程序员站长
2022/08/09
3110
用户代码未处理MetadataException
(1)sparkstreaming结合sparksql读取socket实时数据流
Spark Streaming是构建在Spark Core的RDD基础之上的,与此同时Spark Streaming引入了一个新的概念:DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。DStream抽象是Spark Streaming的流处理模型,在内部实现上,Spark Streaming会对输入数据按照时间间隔(如1秒)分段,每一段数据转换为Spark中的RDD,这些分段就是Dstream,并且对DStream的操作都最终转变为对相应的RDD的操作。
NBI大数据
2022/08/31
5810
(1)sparkstreaming结合sparksql读取socket实时数据流
Flink入门:读取Kafka实时数据流,实现WordCount
本文主要介绍Flink接收一个Kafka文本数据流,进行WordCount词频统计,然后输出到标准输出上。通过本文你可以了解如何编写和运行Flink程序。
PP鲁
2020/02/26
5.5K0
Flink入门:读取Kafka实时数据流,实现WordCount
如何撤消 Git 中最新的本地提交?
在使用Git进行版本控制时,有时我们可能会犯下错误或者想要撤销最新的本地提交。Git提供了一些强大的工具和命令,使我们能够轻松地撤消最近的提交并修复错误。
网络技术联盟站
2023/05/29
1.3K0
如何撤消 Git 中最新的本地提交?
厚土Go学习笔记 | 32. Readers读取数据流
go语言的 io 包指定了 io.Reader 接口。go语言标准库包含了这个接口的许多实现,包括文件、网络连接、压缩、加密等等。 io.Reader 接口有一个 Read 方法: func (T) Read(b []byte) (n int, err error) 在程序中,我们使用循环读取数据流,直到 error 返回 io.EOF 。 我们建立一个每次以 8 个字节读取 strings.Reader 的输出的程序示例。 package main import( "fmt" "stri
李海彬
2018/03/28
8580
学习记录——Unity读取解析外部文本
话不多说直接上代码,其实就是调用已有函数,并解析到的是StreamingAssets中的文本,这样 不用访问绝对路径
MrLi001
2022/04/20
1.1K0
PostgreSQL启动恢复读取checkpoint记录失败的条件
1、首先读取ControlFile->checkPoint指向的checkpoint 2、如果读取失败,slave直接abort退出,master再次读取ControlFile->prevCheckPoint指向的checkpoint StartupXLOG->     |--checkPointLoc = ControlFile->checkPoint;     |--record = ReadCheckpointRecord(xlogreader, checkPointLoc, 1, true):     |-- if (record != NULL){           ...         }else if (StandbyMode){             ereport(PANIC,(errmsg("could not locate a valid checkpoint record")));         }else{             checkPointLoc = ControlFile->prevCheckPoint;             record = ReadCheckpointRecord(xlogreader, checkPointLoc, 2, true);             if (record != NULL){                 InRecovery = true;//标记下面进入recovery             }else{                 ereport(PANIC,(errmsg("could not locate a valid checkpoint record")));             }         }
星哥玩云
2022/08/17
8000
LeetCode 网易-2. 古老的游戏机
小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。
Michael阿明
2021/02/19
3690
实习记录(五) - AJP协议文件读取漏洞
Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。而Tomcat服务器8009端口上的AJP协议存在漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件,如:webapp配置文件或源代码等
Naraku
2021/07/29
9550
实习记录(五) - AJP协议文件读取漏洞
mysql 获取分组中最新记录SQL写法示例 select group by order by
and it is producing the correct results however they are not in the correct order.
一个会写诗的程序员
2020/05/18
2.6K0
ROS学习记录⑥:动态配置参数
动态配置参数 1. 新建功能包 2. 创建cfg文件 3. 节点文件 4. 启动配置 1. 新建功能包 cd catkin_ws/src catkin_create_pkg pid roscpp rospy rosmsg std_msgs dynamic_reconfigure 2. 创建cfg文件 新建一个cfg文件夹,在里面新建一个.cfg文件 mkdir cfg cd cfg touch PID.cfg 动态调参的核心API: gen.add(name,type, level,description
小黑鸭
2020/11/24
1.1K0
如何避免软件工程中最昂贵错误的发生
编者按:影响软件工程进度的原因有很多种,而代码重写无疑是最耗费时间的变更之一。那么重写的时候需要注意哪些细节才能把资源开销控制到最低或可接受的程度呢?本文作者Edmond Lau在其博文中进行了阐述。以下为译文。
哲洛不闹
2018/09/19
4750
.net捕捉全局未处理异常的3种方式
 我们在实际项目开发中,经常会遇到一些不可预见的异常产生,有的异常在程序运行时就对其进行处理(try) 但是,有的程序不需要每一个地方都用try进行处理,那么针对这种情况,可以参照下面的方式,实现对异常的统一抓取处理
小小许
2018/09/20
1.4K0

相似问题

如何删除卡桑德拉中最古老的记录?

13

如何选择表PostgreSQL中最古老的记录?

20

SQL :返回日期中最古老的记录

21

如何在分组记录旁边获得mongodb组中最古老的记录?

11

如何分配python中最古老的列

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文