HarmonyOS鸿蒙Next跟老卫学仓颉编程语言开发:浮点类型

HarmonyOS鸿蒙Next跟老卫学仓颉编程语言开发:浮点类型 浮点类型包括Float16、Float32和Float64,分别用于表示编码长度为16-bit、32-bit和64-bit的浮点数(带小数部分的数字,如3.14159、8.24和0.1等)的类型。Float16、Float32和Float64分别对应IEEE 754中的半精度格式(即binary16)、单精度格式(即binary32)和双精度格式(即binary64)。

Float64的精度约为小数点后15位,Float32的精度约为小数点后6位,Float16的精度约为小数点后3位。使用哪种浮点类型,取决于代码中需要处理的浮点数的性质和范围。在多种浮点类型都适合的情况下,首选精度高的浮点类型,因为精度低的浮点类型的累计计算误差很容易扩散,并且它能精确表示的整数范围也很有限。

浮点类型示意图

浮点类型字面量

浮点类型字面量有两种进制表示形式:十进制、十六进制。在十进制表示中,一个浮点字面量至少要包含一个整数部分或一个小数部分,没有小数部分时必须包含指数部分(以e或E为前缀,底数为10)。在十六进制表示中,一个浮点字面量除了至少要包含一个整数部分或小数部分(以0x或0X为前缀),同时必须包含指数部分(以p或P为前缀,底数为2)。

下面的例子展示了浮点字面量的使用:

let a: Float32 = 3.14
let b: Float32 = 2e3
let c: Float32 = 2.4e-1
let d: Float64 = .123e2
let e: Float64 = 0x1.1p0
let f: Float64 = 0x1p2
let g: Float64 = 0x.2p4

在使用十进制浮点数字面量时,可以通过加入后缀来明确浮点数字面量的类型,后缀与类型的对应关系如下表3-2所示。

表3-2 后缀与类型的对应关系

后缀 类型
f16 Float16
f32 Float32
f64 Float64

加入了后缀的浮点数字面量可以像下面的方式来使用:

let a = 3.14f32   // a is 3.14 with type Float32
let b = 2e3f32    // b is 2e3 with type Float32
let c = 2.4e-1f64 // c is 2.4e-1 with type Float64
let d = .123e2f64 // d is .123e2 with type Float64

浮点类型支持的操作

浮点类型默认支持的操作符包括:算术操作符、关系操作符、赋值操作符、复合赋值操作符。浮点类型不支持自增和自减操作符。

浮点类型之间、浮点类型和整数类型之间可以互相转换。

参考引用

更多仓颉学习资料,详见:


更多关于HarmonyOS鸿蒙Next跟老卫学仓颉编程语言开发:浮点类型的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以试用仓颉开发鸿蒙APP。 见 “HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”:https://coding.imooc.com/class/927.html

更多关于HarmonyOS鸿蒙Next跟老卫学仓颉编程语言开发:浮点类型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next的仓颉编程语言中,浮点类型包括单精度浮点数(Float)和双精度浮点数(Double)。Float类型为32位,符合IEEE 754标准;Double类型为64位,提供更高精度。在仓颉中,浮点类型用于处理小数和科学计算,支持标准的算术运算和比较操作。

在HarmonyOS Next中使用仓颉编程语言处理浮点类型时,确实需要根据精度需求和计算场景选择合适的类型。Float16、Float32和Float64分别对应IEEE 754标准的半精度、单精度和双精度浮点数,它们的精度和范围依次递增。

对于大多数通用计算,推荐使用Float64以保证足够的精度,避免累计误差。在性能敏感或内存受限的场景(如图形处理、嵌入式设备)中,可以考虑使用Float32或Float16,但需注意精度损失可能影响结果准确性。

仓颉语言支持十进制和十六进制浮点字面量,并允许通过后缀(如f32、f64)显式指定类型,这有助于提高代码可读性和类型安全性。浮点类型支持算术、关系和赋值操作,但不支持自增/自减操作符。

选择浮点类型时,应综合考虑数值范围、精度要求、内存占用和计算性能。对于科学计算或金融应用,优先使用Float64;对于实时渲染或传感器数据处理,可权衡使用Float32或Float16。

回到顶部