我想将一些数字舍入到最接近的十分之一,仅使用奇数十分之一.例如
91.15 -> 91.1
91.21 -> 91.3
Run Code Online (Sandbox Code Playgroud)
这样做的简单通用方程是什么?
这不是四舍五入到最接近的十分之一,而是四舍五入到最接近的第五个(十分之二),偏移十分之一.考虑到这一点,一般等式是:
# Any language where 'round' rounds to the nearest integer
radioStation = round( (original-offset)/interval ) * interval + offset
Run Code Online (Sandbox Code Playgroud)
在Lua:
-- number: the original value to round
-- interval: the distance between desired values
-- offset: an optional shifting of the values
function roundToNearest( number, interval, offset )
offset = offset or 0 -- default value
interval = interval or 1 -- default value
return math.floor( (number-offset)/interval + 0.5 ) * interval + offset
end
for n=1, 2, 0.09 do
local result = roundToNearest(n, 0.2, 0.1)
print(string.format("%.2f : %g", n, result))
end
--> 1.00 : 1.1
--> 1.09 : 1.1
--> 1.18 : 1.1
--> 1.27 : 1.3
--> 1.36 : 1.3
--> 1.45 : 1.5
--> 1.54 : 1.5
--> 1.63 : 1.7
--> 1.72 : 1.7
--> 1.81 : 1.9
--> 1.90 : 1.9
--> 1.99 : 1.9
Run Code Online (Sandbox Code Playgroud)