Lua——保留小数位

一、直接舍弃n位

function KeepDecimalPlace(num, n)
	local temp = 10 ^ (-n)
	num = num - num % temp
	return num
end

print(KeepDecimalPlace(0.1234, 3))   ---打印:0.123

二、四舍六入五成双?

function KeepDecimalPlace(num, n)
	local format = "%."..n.."f"
	num = string.format(format, num)
	return num
end

print(KeepDecimalPlace(0.1274,3))   ---打印:0.127 四舍
print(KeepDecimalPlace(0.1236,3))   ---打印:0.124 六入

print(KeepDecimalPlace(0.12451,3))   ---打印:0.125 五后面有数就入
print(KeepDecimalPlace(0.12450,3))   ---打印:0.124

print(KeepDecimalPlace(0.1245,3))   ---打印:0.124
print(KeepDecimalPlace(0.1255,3))   ---打印:0.126 第3位是5时开始判断进位
print(KeepDecimalPlace(0.1265,3))   ---打印:0.127
print(KeepDecimalPlace(0.1275,3))   ---打印:0.128 
  1. 并非是简单的四舍六入五成双,区别于五成双中的5前如果是奇数需舍无进位,而lua中的5前数字大于等于5才舍5进位
  2. 四舍六入五成双

三、四舍五入

1. floor下取整四舍五入得整数

function GetInteger(num)
    return math.floor(num + 0.5)
end

print(GetInteger(0.12451))   ---打印:0

2. 保留小数位

function KeepDecimalPlace(num, n)
    return math.floor(num * 10^n + 0.5) / 10^n
end

print(KeepDecimalPlace(0.1244,3))   ---打印:0.124
print(KeepDecimalPlace(0.1245,3))   ---打印:0.125
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值