I got a Value that = 0.984375, and I want it to be rounded to 2 decimals: 0.98

How would I do this?

You could just make a new string of the num, using `string.sub`

, then convert it back to a number

For example,

```
local number = 0.984375 --original number
local newnumber = string.sub(tostring(number), 1,4)
newnumber = tonumber(newnumber)
```

To make this a function, do the following:

```
local function convert(num)
local newnumber = string.sub(tostring(num), 1,4)
newnumber = tonumber(newnumber)
print(newnumber)
end
convert(0.923878327)
```

Thereâ€™s probably better ways of doing it, but thatâ€™s just 1 way. I would recommend using @SuperSpeedy101â€™s way, because itâ€™s more efficient and easier.

Multiply the value by 100

then use math.floor(value)

then divide by 100

example

```
local value = 0.984375
value *= 100
value = math.floor(value)
value = value / 100
```

I have an alternative to superspeedy101â€™s answer:

```
math.round(number*100)/100
```

it works, i tested it.

Yes that does work, however math.round is rounding (either doing floor or ceil depending on the decimals) which might have a performance cost and possibly floating point jank, but overall it seems to work the same.

In summary:

Using Luau: `math.round(number*100)/100`

or `math.floor(value*100)/100`

Using just Lua: `math.floor(value*100)/100`

(There is no math.round in vanilla lua)

i see. the only differece is that normal lua doesnt use â€śmath.roundâ€ť in itâ€™s code.

i think i made or pasted a function a while ago to round numbers by decimal places

```
function math_round(n: number, scale: number?)
return tonumber(string.format("%." .. (typeof(scale) == "number" and scale or 2) .. "f", n))
end
```

not sure why math.round doesnâ€™t have a second param by default

sorry to necro, but do you know how i can get this rounded number without a decimal, using the output for an ID but i cant have a decimal, just the numbers

Confusing but, simple

math.round()?

rounds a number without any decimals

i want to take the number and just remove the .

example, i have 5.3892384937, it goes to 5.389, this then goes to 5389

Hereâ€™s my function to round numbers to whatever decimal places you want them to.

```
local function RoundNumber(Number, NumberDecimalPlaces)
local Rounding = math.floor
local Digits
if Number < 0 then
Number -= (1/(10^(NumberDecimalPlaces+1)))
Digits = math.ceil(math.log10(math.clamp(Number *-1,0,math.huge)))
Rounding = math.ceil
else
Number += (1/(10^(NumberDecimalPlaces+1)))
Digits = math.ceil(math.log10(math.clamp(Number,0,math.huge)))
end
local Result = Rounding(Number*(10^NumberDecimalPlaces))/(10^NumberDecimalPlaces)
return Result
end
print(RoundNumber(-10.52321,2))
```

My initial just thought to do this would be convert it to a string, remove the decimal from the string, and then convert it back to a number.

Also, if you would like to continue this conversation, please open a new thread or go to DMS

```
textstring.format("%.f2", yourstring)
--[[ ^
Allows however many decimals that the number is.
--]]
```

A simple solution.