「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解

本篇将详细介绍 Cangjie 中的浮点类型,包括浮点数的表示方法、精度、舍入与溢出处理、科学计数法表示、字面量的进制表示、常用运算、类型转换及应用场景,帮助开发者掌握浮点数的使用方法。


关键词
  • 浮点类型表示
  • 精度与舍入
  • 溢出与下溢
  • 科学计数法
  • 类型转换
  • 字面量表示

一、浮点类型概述

在 Cangjie 中,浮点类型用于表示包含小数部分的数值,主要包括两种类型:

  • 单精度浮点数Float32):约 6-7 位有效数字,适用于内存占用较低的场景。
  • 双精度浮点数Float64):约 15-16 位有效数字,适用于对精度要求较高的场景。

建议:若没有特殊的内存限制,优先使用 Float64 以获得更高精度。


二、浮点数的表示范围与精度

浮点数的表示范围取决于其位数限制:

  1. 单精度浮点数Float32):范围约为 ±3.4 × 10^38。
  2. 双精度浮点数Float64):范围约为 ±1.8 × 10^308。

由于浮点数使用二进制存储,在高精度运算中可能会出现舍入误差。


三、浮点类型字面量的表示

Cangjie 中的浮点类型字面量支持两种进制表示方式:十进制十六进制

  • 十进制表示:字面量至少需要包含整数或小数部分。当没有小数部分时,必须包含指数部分(以 eE 为前缀,底数为 10)。

  • 十六进制表示:字面量以 0x0X 为前缀,指数部分以 pP 表示(底数为 2),同样至少需要包含整数或小数部分。

示例

let a: Float32 = 3.14       // 十进制
let b: Float32 = 2e3        // 科学计数法
let c: Float32 = 0x1.1p0    // 十六进制
let d: Float64 = 0x.2p4     // 十六进制

四、浮点数的科学计数法表示

在 Cangjie 中,浮点数可以通过科学计数法表示,适合表示较大或较小的数值。使用 eE 表示指数部分,例如:1.23e4 表示 1.23 × 10^4

示例

let bigNum = 3.45e6      // 表示 3450000
let smallNum = 2.67e-4   // 表示 0.000267println("大数: ${bigNum}, 小数: ${smallNum}")

输出:

大数: 3450000.000000, 小数: 0.000267

五、浮点数的运算

浮点数支持基础的算术运算和数学函数(如平方根、绝对值等),但需注意运算过程中可能出现精度损失。

5.1 算术运算

浮点数的加、减、乘、除操作如下:

let a: Float64 = 10.5
let b: Float64 = 3.2let sum = a + b        
let difference = a - b  
let product = a * b     
let quotient = a / b    println("加法: ${sum}, 减法: ${difference}, 乘法: ${product}, 除法: ${quotient}")

输出:

加法: 13.700000, 减法: 7.300000, 乘法: 33.600000, 除法: 3.281250

六、浮点数的溢出与下溢
  • 溢出:当浮点数超过最大表示范围时,Cangjie 会返回 inf
  • 下溢:当浮点数低于最小表示范围时,Cangjie 会返回 0.000000
let overflow = 1e309    // 超出 Float64 范围
let underflow = 1e-324  // 小于 Float64 范围println("溢出: ${overflow}, 下溢: ${underflow}")

输出:

溢出: inf, 下溢: 0.000000

七、浮点类型的后缀表示

为明确浮点字面量的类型,可在字面量后添加特定后缀:

后缀类型
f16Float16
f32Float32
f64Float64

示例

let a = 3.14f32   // a 的类型为 Float32
let b = 2e3f32    // b 的类型为 Float32
let c = 2.4e-1f64 // c 的类型为 Float64
let d = .123e2f64 // d 的类型为 Float64

八、浮点数的类型转换

浮点数与整数之间可以相互转换,但浮点转整数时会截断小数部分。

let floatNum: Float64 = 10.99
let intNum: Int32 = Int32(floatNum)  // 转换后小数部分被截断println("浮点数: ${floatNum}, 转换后的整数: ${intNum}")

输出:

浮点数: 10.990000, 转换后的整数: 10

九、浮点数的应用场景

浮点数适用于科学计算、货币金额表示等场景。

9.1 科学计算
let radius = 5.5
let area = 3.14159 * radius * radiusprintln("圆的面积: ${area}")

输出:

圆的面积: 95.033097
9.2 精确计算

在价格计算中,可使用浮点数表示更精确的金额:

let pricePerItem: Float64 = 19.99
let quantity: Float64 = 3.0
let totalPrice = pricePerItem * quantityprintln("总价: ${totalPrice}")

输出:

总价: 59.970000

十、浮点类型支持的操作符

浮点类型支持以下操作符:

  • 算术操作符:如 +-*/ 等。
  • 关系操作符:如 <>== 等。
  • 赋值操作符:如 =
  • 复合赋值操作符:如 +=-=

注意:浮点类型不支持自增(++)和自减()操作符。


小结

本篇详细讲解了 Cangjie 浮点类型的表示范围、科学计数法表示、字面量的进制表示、基本运算、舍入控制及应用场景,帮助开发者熟练运用浮点数处理涉及小数的计算任务。


下篇预告

下一篇将解析 Cangjie 的 布尔类型,探讨布尔运算及其在条件判断中的应用,敬请关注 「Mac玩转仓颉内测版25」基础篇5 - 布尔类型详解


上一篇:「Mac玩转仓颉内测版23」基础篇3 - 深入理解整数类型
下一篇:「Mac玩转仓颉内测版25」基础篇5 - 布尔类型详解

作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=206
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/475956.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端—Cursor编辑器

在当今快速发展的软件开发领域&#xff0c;效率和质量是衡量一个工具是否优秀的两个关键指标。今天&#xff0c;我要向大家推荐一款革命性的代码编辑器——Cursor&#xff0c;它集成了强大的AI功能&#xff0c;旨在提高开发者的编程效率。以下是Cursor编辑器的详细介绍和推荐理…

uniapp页面样式和布局和nvue教程详解

uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px&#xff0c;一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准&#xff0c;750rpx恰好为屏幕宽度。屏幕变宽&#xff0c;rpx 实际显示效果会等比放大…

Kubernetes 安装配置ingress controller

> 对于Kubernetes的Service&#xff0c;无论是Cluster-Ip和NodePort均是四层的负载&#xff0c;集群内的服务如何实现七层的负载均衡&#xff0c;这就需要借助于Ingress&#xff0c;Ingress控制器的实现方式有很多&#xff0c;比如nginx, Contour, Haproxy, trafik, Istio。…

js批量输入地址获取经纬度

使用js调用高德地图的接口批量输入地址获取经纬度。 以下的请求接口的key请换成你的key。 创建key&#xff1a;我的应用 | 高德控制台 &#xff0c;服务平台选择《Web服务》。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-…

天润融通携手挚达科技:AI技术重塑客户服务体验

业务爆发式增长&#xff0c;但座席服务却跟不上&#xff0c;怎么办&#xff1f; 智能充电领导者的挚达科技就面临过 这样的问题&#xff0c;让我们来看看如何解决。 2010年以来&#xff0c;国内新能源汽车市场进入高速发展期&#xff0c;作为新能源汽车的重要配件&#xff0c…

51c自动驾驶~合集31

我自己的原文哦~ https://blog.51cto.com/whaosoft/12121357 #大语言模型会成为自动驾驶的灵丹妙药吗 人工智能&#xff08;AI&#xff09;在自动驾驶&#xff08;AD&#xff09;研究中起着至关重要的作用&#xff0c;推动其向智能化和高效化发展。目前AD技术的发展主要遵循…

【代码随想录】贪心

455. 分发饼干 题目 随想录 本质&#xff1a; 对于每个孩子&#xff0c;使用可以满足该孩子的最小的饼干。所以对孩子胃口和饼干进行sort排序&#xff0c;依次将大的饼干满足给孩子。 贪心策略&#xff1a; 想一下局部最优&#xff0c;想一下全局最优&#xff0c;如果局部最优…

QWen2.5学习

配置环境 pip install transformers 记得更新一下&#xff1a;typing_extensions pip install --upgrade typing_extensions 安装modelscope modelscope/modelscope: ModelScope: bring the notion of Model-as-a-Service to life. 下载这个仓库的代码上传到服务器解压 推…

存算分离的过去、现在和未来

存算分离架构&#xff0c;作为数据处理领域的一个重要概念&#xff0c;从其最初的雏形到如今广泛应用&#xff0c;经历了多次迭代和变革。雁飞老师在分享中从过去的存算架构&#xff0c;逐步讲述存算分离的演进&#xff0c;现今的存算分离架构的优势及其在 Databend 中的体现&a…

web——upload-labs——第九关——特殊字符::$DATA绕过

特殊字符::$DATA绕过 典型绕过场景 在一些系统中&#xff0c;::$DATA 被用于绕过文件路径的限制。比如&#xff1a; 路径过滤绕过&#xff1a;如果系统有某种机制来检查和限制文件路径&#xff08;例如&#xff0c;禁止访问某些系统目录或敏感文件&#xff09;&#xff0c;通…

图的存储、遍历以及Dijkstra/Floyd/Kruskal/Prim/拓扑排序/关键路径(实验8--作业)

图–数据结构操作与算法全解析 一、引言 图作为一种重要的数据结构&#xff0c;在计算机科学与众多领域中都有着广泛的应用。它能够有效地描述和解决各种复杂的关系问题&#xff0c;如网络拓扑、路径规划、资源分配等。本文将详细介绍图的相关操作和知识点&#xff0c;包括图…

利用Vue的相关特性,制作相册

目录 一、整体结构 1、设置一个div盒子 2、设置图片展示 3、页码按钮 4、翻页按钮 二、CSS样式 1、 .clear_ele::after 2、设置图片、按钮等属性的样式 三、JavaScript部分&#xff08;Vue&#xff09; 1、导入模块 2、创建Vue应用 ①定义响应式数据 ②定义事件处…

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…

(C语言)文件操作

目录 文件 程序文件 数据文件 文件名 ​编辑数据文件的分类 文件的打开和关闭 流 标准流 1&#xff09;stdin 2&#xff09;stdout 3&#xff09;stderr 文件指针 文件的打开和关闭 对文件内容操作的函数 1&#xff09;fgetc&#xff0c;fputc 2&#xff09;fp…

AI修改验证账号名正则表达式的案例

我有如下的一行老代码&#xff0c;今天复用的时候发现当时注释写错了&#xff0c;改好以后请AI再检查一遍。 因为这次AI的分析的思路很典范&#xff0c;所以拿出来分享一下。 提问&#xff1a; 请看一下这个正则和后面的注释是否匹配&#xff0c;现在的验证规则是否保证账号至…

SQL进阶技巧:如何进行数字范围统计?| 货场剩余货位的统计查询方法

目录 0 场景描述 1 剩余空位区间和剩余空位编号统计分析 2 查找已用货位区间 3 小结 0 场景描述 这是在做一个大型货场租赁系统时遇到的问题&#xff0c;在计算货场剩余存储空间时&#xff0c;不仅仅需要知道哪些货位是空闲的&#xff0c;还要能够判断出哪些货位之间是连…

彻底理解如何保证Redis和数据库数据一致性问题

一.背景 系统中缓存最常用的策略是&#xff1a;服务端需要同时维护 DB 和 Cache 并且是以 DB 的结果为准&#xff0c;那么就可能出现 DB 和 Cache 数据不一致的问题。 二.读数据 逻辑如下&#xff1a; 当客户端发起查询数据的请求&#xff0c;首先回去Redis中查看没有没该数据&…

后仿真中的SDF语法之关键字 IOPATH 用法详解

在后仿真中&#xff0c;SDF&#xff08;Standard Delay Format&#xff09;文件用于描述设计的时序信息&#xff0c;而IOPATH是SDF中的一个关键结构&#xff0c;用于定义单元间的路径延迟。以下是IOPATH关键字的用法及其相关内容的详细介绍&#xff1a; IOPATH结构旨在将延迟数…

Springboot 整合 Java DL4J 搭建智能问答系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“网上书城管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 用户注册界面…