惯例

简介: 惯例

我们可以简单的通过增加 0.0 的方法将整型值强制转换为浮点型值,一个整型值总是可以被转换成浮点型值

> -3 + 0.0                      --> -3.0
> 0x7fffffffffffffff + 0.0      --> 9.2233720368548e+18


小于253的所有整型值的表示与双精度浮点型值的表示一样,对于绝对值超过这个值的整型值而言,在将其强制转换为浮点型值时可能导致精度损失:

> 9007199254740991 + 0.0 == 9007199254740991        --> true
> 9007199254740992 + 0.0 == 9007199254740992        --> true
> 9007199254740993 + 0.0 == 9007199254740993        --> false


在最后一行中,253 + 1的结果被取整为253,打破了等式,表达式结果为 false

通过与零进行按位或运算,可以把浮点型值强制转换位整型值:

> 2^53          --> 9.007199254741e+15  (浮点型值)
> 2^53 | 0      --> 9007199254740992    (整型值)


在将浮点型值强制转换位整型值时, Lua 语言会检查数值是否与整型值表示完全一致,即没有小数部分且其值在整型值的表示范围内,如果不满足条件则会抛出异常:

> 3.2 | 0         --小数部分
stdin:1: number has no integer representation
> 2^64 | 0        --超出范围
stdin:1: number has no integer representation
> math.random(1, 3.5)  
stdin:1: bad argument #2 to 'random' (number has no integer representation)   --数值没有用整数表示点击复制复制失败已复制


对小数进行取整必须显示地调用取整函数。


另一种把数值强制转换为整型的方式是使用函数 math.tointeger ,该函数会在输入参数无法转换为整型值时返回 nil

> math.tointeger(-258.0)    --> -258
> math.tointeger(2^30)      --> 1073741824
> math.tointeger(5.01)      --> nil           (不是整数值)
> math.tointeger(2^64)      --> nil           (超出范围)


这个函数在需要检查一个数值能否被转换成整型值时尤为有用。例如,以下函数在可能时会将输入参数转换为整型值,否则保持原来的值不变:

function cond2int(x)
  return math.tointeger(x) or x
end
目录
相关文章
WK
|
2月前
|
Python
Python函数命名
在Python中,函数命名应清晰、简洁且易于理解。遵循PEP 8风格指南,使用小写字母和下划线分隔单词,避免单字母命名和保留字。函数名应描述功能,以动词开头,避免泛化名称,使用有意义的缩写,保持命名风格一致,避免魔法数字。示例包括 `calculate_area_of_circle`、`fetch_data_from_api` 和 `save_file_to_disk`。这些实践有助于创建易读、易维护的代码。
WK
22 0
|
5月前
|
Java 程序员
驼峰命名法在编程中的应用
驼峰命名法在编程中的应用
|
6月前
|
开发者 Python
【干货】Python编程惯例
【干货】Python编程惯例
|
6月前
|
API C语言 开发者
C语言中抽象函数与具体实现的命名与组织
在C语言的嵌入式系统和开源软件开发中,良好地处理抽象函数与实现对于代码质量至关重要。建议将API作为接口定义操作,使用函数指针实现动态替换。避免使用`Impl`后缀,推荐用`Callback`或`Handler`表示具体实现。回调函数用于异步事件处理,通过指针传递。示例展示了C语言中函数指针的用法,嵌入式项目常通过目录结构区分平台相关代码。清晰的命名和组织能提升代码可读性和团队协作效率。
|
7月前
|
测试技术 C++ 开发者
避免C++类名冲突的技术性探讨
避免C++类名冲突的技术性探讨
53 0
|
程序员 C++
编程命名规则
编程命名规则
114 0
|
程序员 Python
Python编码规范:标识符
Python编码规范:标识符
117 0
|
IDE 程序员 开发工具
世界上第一个程序员命名的编程语言是什么?
Ada曾是美国国防部指定的唯一一款可用于军用系统开发的语言,旨在整合美军事系统中运行着450多种不同的程序设计语言,她是迄今为止最复杂、最完备的软件工具。开发始于1975年,最早是针对嵌入式和实时系统设计的,1983年发布。其命名是为了纪念世界上第一位程序员阿达·洛芙莱斯。Ada具有许多现代软件的开发原理,而且将这些原理进行实现他可以改善软件系统的清晰性、可靠性、有效性、可维护性。
424 0
|
前端开发 JavaScript 算法
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
242 0
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!