「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
本篇将详细介绍 Cangjie 中的浮点类型,包括浮点数的表示方法、精度、舍入与溢出处理、科学计数法表示、字面量的进制表示、常用运算、类型转换及应用场景,帮助开发者掌握浮点数的使用方法。
关键词
- 浮点类型表示
- 精度与舍入
- 溢出与下溢
- 科学计数法
- 类型转换
- 字面量表示
一、浮点类型概述
在 Cangjie 中,浮点类型用于表示包含小数部分的数值,主要包括两种类型:
- 单精度浮点数(Float32):约 6-7 位有效数字,适用于内存占用较低的场景。
- 双精度浮点数(Float64):约 15-16 位有效数字,适用于对精度要求较高的场景。
建议:若没有特殊的内存限制,优先使用 Float64 以获得更高精度。
二、浮点数的表示范围与精度
浮点数的表示范围取决于其位数限制:
- 单精度浮点数(Float32):范围约为 ±3.4 × 10^38。
- 双精度浮点数(Float64):范围约为 ±1.8 × 10^308。
由于浮点数使用二进制存储,在高精度运算中可能会出现舍入误差。
三、浮点类型字面量的表示
Cangjie 中的浮点类型字面量支持两种进制表示方式:十进制和十六进制。
-
十进制表示:字面量至少需要包含整数或小数部分。当没有小数部分时,必须包含指数部分(以 e 或 E 为前缀,底数为 10)。
-
十六进制表示:字面量以 0x 或 0X 为前缀,指数部分以 p 或 P 表示(底数为 2),同样至少需要包含整数或小数部分。
示例:
let a: Float32 = 3.14 // 十进制
let b: Float32 = 2e3 // 科学计数法
let c: Float32 = 0x1.1p0 // 十六进制
let d: Float64 = 0x.2p4 // 十六进制
四、浮点数的科学计数法表示
在 Cangjie 中,浮点数可以通过科学计数法表示,适合表示较大或较小的数值。使用 e 或 E 表示指数部分,例如: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
七、浮点类型的后缀表示
为明确浮点字面量的类型,可在字面量后添加特定后缀:
后缀 | 类型 |
---|---|
f16 | Float16 |
f32 | Float32 |
f64 | Float64 |
示例:
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
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章:
「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
本篇将详细介绍 Cangjie 中的浮点类型,包括浮点数的表示方法、精度、舍入与溢出处理、科学计数法表示、字面量的进制表示、常用运算、类型转换及应用场景,帮助开发者掌握浮点数的使用方法。 关键词 浮点类型表示精度与舍入溢出与下溢科学计数法类型转换…...
【UGUI】Unity 背包系统实现02:道具信息提示与显示
在游戏开发中,背包系统是一个常见的功能模块,用于管理玩家拾取的物品。本文将详细介绍如何在 Unity 中实现一个简单的背包系统,包括道具信息的提示和显示功能。我们将通过代码和场景搭建来逐步实现这一功能。 1. 功能需求清单 在实现背包系…...
掌握移动端性能测试利器:深入JMeter手机录制功能
引言 在当今移动互联网时代,应用程序的性能和用户体验至关重要。为了确保应用程序在不同设备和网络环境下都能稳定运行,性能测试成为了不可或缺的一环。Apache JMeter作为一款强大的开源性能测试工具,不仅支持传统的PC端性能测试,…...
springboot010大学生入学审核系统的设计与实现(源码+包运行+LW+技术指导)
项目描述 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本站是一个B/S模式系统,采用Spring Boot框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,…...
Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行
一、前言说明 在地图应用中,有很多时候是需要断网环境中离线使用的,一般会采用两种做法,一种是只下载好离线瓦片地图,然后根据不同的缩放和经纬度坐标绘制瓦片。这种方式优点是任何地图都支持,只需要拿到瓦片即可&…...
从繁琐到优雅:用 PyTorch Lightning 简化深度学习项目开发
从繁琐到优雅:用 PyTorch Lightning 简化深度学习项目开发 在深度学习开发中,尤其是使用 PyTorch 时,我们常常需要编写大量样板代码来管理训练循环、验证流程和模型保存等任务。PyTorch Lightning 作为 PyTorch 的高级封装库,帮助…...
UE5 第一人称射击项目学习(完结)
这个项目几乎完结了。 也算我上手的第一个纯蓝图小项目。 现在只剩下缝缝补补了。 之前把子弹设计为蓝图,这里要引入C的面向对象思想,建立成员函数。 首先双击打开子弹的蓝图 这边就可以构造成员函数 写一个print your name 在这里生成成员函数后&am…...
Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计
概述 Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计,探索 RISC-V Vector1.0 的前沿技术,选择嘉楠科技的 Canmv K230D Zero 开发板。这款创新的开发板是由嘉楠科技与香蕉派开源社区联合设计研发,搭载了先进的勘智 K230D 芯片。 K230…...
【vim】使用 gn 组合命令实现搜索选中功能
gn是Vim 7.4新增的一个操作(motion),作用是跳到并选中下一个搜索匹配项。 具体说,Vim里执行搜索后,执行n操作只会跳转到下一个匹配项,而不选中它。但是我们往往需要对匹配项执行一些修改操作,例…...
【Python刷题】广度优先搜索相关问题
题目描述 小A与小B 算法思路 小A一次移动一步,但有八个方向,小B一次移动两步,只有四个方向,要求小A和小B最早的相遇时间。用两个队列分别记录下小A和小B每一步可以走到的位置,通过一个简单的bfs就能找到这些位置并…...
竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】
Hello,这里是Easy数模!以下idea仅供参考,无偿分享! 题目背景 本题旨在通过对中国特定城市的房产、人口、经济、服务设施等数据进行分析,评估其在应对人口老龄化、负增长趋势和极端气候事件中的韧性与可持续发展能力。…...
早期超大规模语言模型的尝试——BLOOM模型论文解读,附使用MindSpore和MindNLP的模型和实验复现
背景 预训练语言模型已经成为了现代自然语言处理pipeline中的基石,因为其在少量的标注数据上产生更好的结果。随着ELMo、ULMFiT、GPT和BERT的开发,使用预训练模型在下游任务上微调的范式被广泛使用。随后发现预训练语言模型在没有任何额外训练的情况下任…...
二分查找题目:有序数组中的单一元素
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:有序数组中的单一元素 出处:540. 有序数组中的单一元素 难度 4 级 题目描述 要求 给定一个仅由整数…...
springboot基于Android的华蓥山旅游导航系统
摘 要 华蓥山旅游导航系统是一款专为华蓥山景区设计的智能导览应用,旨在为用户提供便捷的旅游信息服务。该系统通过整合华蓥山的地理信息、景点介绍、交通状况等数据,实现了对景区的全面覆盖。用户可以通过该系统获取实时的旅游资讯、交流论坛、地图等。…...
面向对象编程(OOP)深度解析:思想、原则与应用
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 面向对象编程(OOP)深度解析:思想、原则与应用 一、面向对象编程的基本…...
iPhone 17 Air看点汇总:薄至6mm 刷新苹果轻薄纪录
我们姑且将这款iPhone 17序列的超薄SKU称为“iPhone 17 Air”,Jeff Pu在报告中提到,我同意最近关于 iPhone 17超薄机型采用6 毫米厚度超薄设计的传言。 如果这一测量结果被证明是准确的,那么将有几个值得注意的方面。 首先,iPhone…...
「OpenCV交叉编译」ubuntu to arm64
Ubuntu x86_64 交叉编译OpenCV 为 arm64OpenCV4.5.5、cmake version 3.16.3交叉编译器 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu 可在arm或linaro官网下载所需版本,本文的交叉编译器可点击链接跳转下载 Downloads | GNU-A Downloads – Arm Developer L…...
Stable Diffusion的解读(二)
Stable Diffusion的解读(二) 文章目录 Stable Diffusion的解读(二)摘要Abstract一、机器学习部分1. 算法梳理1.1 LDM采样算法1.2 U-Net结构组成 2. Stable Diffusion 官方 GitHub 仓库2.1 安装2.2 主函数2.3 DDIM采样器2.4 Unet 3…...
amd显卡和nVidia显卡哪个好 amd和英伟达的区别介绍
AMD和英伟达是目前市场上最主要的两大显卡品牌,它们各有自己的特点和优势,也有不同的适用场景和用户群体。那么,AMD显卡和英伟达显卡到底哪个好?它们之间有什么区别?我们又该如何选择呢?本文将从以下几个方…...
软件测试—— Selenium 常用函数(一)
前一篇文章:软件测试 —— 自动化基础-CSDN博客 目录 前言 一、窗口 1.屏幕截图 2.切换窗口 3.窗口设置大小 4.关闭窗口 二、等待 1.等待意义 2.强制等待 3.隐式等待 4.显式等待 总结 前言 在前一篇文章中,我们介绍了自动化的一些基础知识&a…...
为什么verilog中递归函数需要定义为automatic?
直接上代码 module automatic_tb;reg [7:0] value;initial begin #0 value < 8d5;#10 $display("result of automatic: %0d", factor_automatic(value));$display("result of static: %0d", factor_static(value));#50 $stop; endfunction reg[7:0] fa…...
23种设计模式-状态(State)设计模式
文章目录 一.什么是状态模式?二.状态模式的结构三.状态模式的应用场景四.状态模式的优缺点五.状态模式的C实现六.状态模式的JAVA实现七.代码解释八.总结 类图: 状态设计模式类图 一.什么是状态模式? 状态模式(State Pattern&…...
EventListener与EventBus
EventListener JDK JDK1.1开始就提供EventListener,一个标记接口,源码如下: /*** A tagging interface that all event listener interfaces must extend.*/ public interface EventListener { }JDK提供的java.util.EventObject࿱…...
Facebook为什么注册失败了?该怎么解决?
有时候用户在尝试注册Facebook账号时可能会遇到各种问题,导致注册失败或遇到困难。小编会为大家分析Facebook注册失败的可能原因,并提供解决方法,帮助大家顺利完成注册流程。 一、Facebook注册失败的可能原因 1. 账号信息问题: …...
前端数据可视化思路及实现案例
目录 一、前端数据可视化思路 (一)明确数据与目标 (二)选择合适的可视化图表类型 (三)数据与图表的绑定及交互设计 (四)页面布局与样式设计 二、具体案例:使用 Ech…...
【DVWA】Brute Force暴力破解实战
问尔辈 何等样人 自摸心头 再来求我;若汝能 克存忠孝 持身正直 不拜何妨 1.Brute Force(Low) 相关的代码分析 if( isset( $_GET[ Login ] ) ) {// Get username$user $_GET[ username ];// Check the database$query "SELECT * FROM users WHERE user $…...
23种设计模式速记法
前言 在软件开发的过程中,设计模式作为解决常见问题的通用模板,一直是开发者的重要工具。尤其是在面临复杂系统架构和需求变化时,设计模式不仅能够提升代码的可复用性和扩展性,还能大大提高团队之间的协作效率。然而,…...
第7章硬件测试-7.3 功能测试
7.3 功能测试 7.3.1 整机规格测试7.3.2 整机试装测试7.3.3 DFX测试 功能测试包括整机规格、整机试装和整机功能测试,是整机结构和业务相关的测试。 7.3.1 整机规格测试 整机规格测试包括尺寸、重量、温度、功耗等数据。这些测试数据与设计规格进行比对和校验&…...
动态规划子数组系列一>等差数列划分
题目: 解析: 代码: public int numberOfArithmeticSlices(int[] nums) {int n nums.length;int[] dp new int[n];int ret 0;for(int i 2; i < n; i){dp[i] nums[i] - nums[i-1] nums[i-1] - nums[i-2] ? dp[i-1]1 : 0;ret dp[i…...
《Python浪漫的烟花表白特效》
一、背景介绍 烟花象征着浪漫与激情,将它与表白结合在一起,会创造出别具一格的惊喜效果。使用Python的turtle模块,我们可以轻松绘制出动态的烟花特效,再配合文字表白,打造一段专属的浪漫体验。 接下来,让…...
网络营销推广公司结构/广东seo加盟
就不复制粘贴了,直接给出原文链接:以操作系统的角度述说线程与进程 转载于:https://www.cnblogs.com/rainbow70626/p/8035422.html...
设计制作的一般流程是明确问题/西安seo推广优化
窃以少年老成,中国称人之语也;年长而勿衰(Keep young while growing old),英、美人相勖之辞也,此亦东西民族涉想不同、现象趋异之一端欤?青年如初春,如朝日,如百卉之萌动…...
做网站的学什么代码/wix网站制作
乒乓操作是一个主要用于数据流控制的处理技巧,典型的乒乓操作如下图所示。 外部输入数据流通过“输入数据选择控制”模块送入两个数据缓冲区中,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(Dual RAM)、SRAM、SDRAM、FIFO等。…...
网站备案 湖北/网站恶意点击软件
题目货物摆放 方法一 由于题目给的数据很大直接使用三个 for循环是算不出结果的。 public class Main {public static void main(String[] args) {long n 2021041820210418L;// 这里数组大小是多少都可以,只要不越界就好long arr[] new long[130];int i 0; //…...
书籍教你如何做网站/西地那非片多少钱一盒
Environment.GetFolderPath 方法 获取指向由指定枚举标识的系统特殊文件夹的路径。 命名空间:System public static string GetFolderPath ( SpecialFolder folder ) 参数 folder 标识系统特殊文件夹的枚举常数。 返回值 如果指定系统的特殊文件夹实际存在于您的计算机上…...
2022年中国企业500强榜单/seo视频教程我要自学网
Java数组初始化有3种方式:动态初始化,静态初始化,默认初始化。 var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名…...