2016-02-01 127 views
1

我将如何做到以下几点?我怎样才能得到lua浮点数的小数?

local d = getdecimal(4.2) --> .2 
+1

'math.fmod(4.2,1)'。如果你对负数不感兴趣,你也可以使用模运算符:'4.2%1'。 – siffiejoe

+2

我投票结束这个问题作为题外话,因为你甚至没有丝毫努力来解决这个问题。 –

+0

@NicolBolas对不起,但我不太擅长这种东西 – chabad360

回答

4

假设你只用数字大于0的工作,模量是最好的一段路要走:

print(4.2%1) 

否则在数学库的FMOD功能应该做的伎俩。

print(math.fmod(4.2,1)) 
+0

需要注意的是,模运算符'%'将始终返回一个正数,而'fmod'则不会。 – Matthew

+0

@Matthew“假设你只使用大于0的数字” – warspyking

+0

因此,“注意事项”这个词组,它是关于两者之间差异的更多信息。 – Matthew

-1
function getDecimal(inp) 
local x = tostring(inp) 
local found_decimal = false 
local output_stream = "" 
    for i = 1, string.len(x) do 
    if found_decimal == false then 
     if string.sub(x, i+1, i+1) == "." then 
     found_decimal = true 
     end 
    else 
    output_stream = output_stream .. string.sub(x,i, i) 
    end 
    end 
return output_stream 
end 

,做什么是它发现一个字符串的小数点后它基本上返回的一切。

如果要打开返回回一批这样做:采取数量,把它变成一个字符串

return tonumber("0" .. output_stream) 
1

你可以采取非范式的方式一点点这个:

function getDec(num) 
return tostring(num):match("%.(%d+)") 
end 

print(getDec(-3.2)) 
--2