惯例

简介: 惯例

我们可以简单的通过增加 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
目录
相关文章
|
7月前
|
开发者 Python
【干货】Python编程惯例
【干货】Python编程惯例
|
机器学习/深度学习 存储 运维
Shell编程规范与变量
Shell编程规范与变量
146 2
|
8月前
|
存储 算法 测试技术
|
前端开发 程序员 PHP
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
208 0
|
编译器 C++
【C++】实用编程规范与建议
C++ 相关,比较实用的 防止疏漏出错的编码规范与编码建议
198 0
|
缓存 PHP
给变量命名的实用技巧
不少小伙伴在起变量名的时遇到过困难,在此,分享一些我的经验和建议: 1.多读代码,从别人的代码中获得启发; 2.分享我自己常用的几个命名逻辑,抛砖引玉; 3. Github上也有一些和变量有关的项目,分享了2个,有兴趣的朋友可以了解以下。
752 1
给变量命名的实用技巧
|
程序员
编程规范
编程规范
109 0
|
程序员 C语言 Windows
编程规范(一)变量命名
编程规范(一)变量命名
|
程序员 API
《代码整洁之道》-有意义的命名
《代码整洁之道》-有意义的命名
|
API Windows
Windows编程命名规则(转)
由于一直在命名方面很乱,这次决定好好规范下。 转载至:http://blog.sina.com.cn/s/blog_52cbfc3f0100fdy6.html 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述。其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。目前在Windows程序开发和MFC程序开发中常用的命名规则是匈牙利命名法。下面就是HN命名法的一般规则。
537 0