Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD General Discussion
chamenas
Wizard


Joined: 26 Mar 2008
Posts: 1547

PostPosted: Wed Jan 21, 2009 10:51 pm   

Trying to limit Float to 2 decimal places [Solved]
 
Is there an a way to limit the decimals retained after float? Seems like it should be as easy as %float(number of decimals, number) but it's not listed as an argument.

Edit:
Did a search, found %format, I think it's odd that it's not inherent in float. However, have a different problem:

Code:

<trigger priority="460" regex="true" id="46">
  <pattern>^Spell: permanency        : modifies none by \d+ for (\d+) cycles, \(\d+ (?:1/2 )?hours\)$</pattern>
  <value>$Time_LeftC=%1
$Time_LeftS=$Time_LeftC*41
$Time_LeftM=%float($Time_LeftS)/60
$Time_LeftH=%float($Time_LeftM)/60
%format($Time_LeftH,2)
#sub  "Permanency Cooldown      : "$Time_LeftH" Real Life hours remaining."</value>
</trigger>


When it triggers, CMUD freezes. This happened AFTER adding the %format($Time_LeftH,2)

Edit 2:
Fixed with Taz's help
$Time_LeftH=%format($Time_LeftH,2)

but it doesn't keep it to two decimal places... doesn't look like it's doing anything.
_________________
Listen to my Guitar - If you like it, listen to more

Last edited by chamenas on Mon Jan 26, 2009 1:01 am; edited 2 times in total
Reply with quote
Taz
GURU


Joined: 28 Sep 2000
Posts: 1395
Location: United Kingdom

PostPosted: Thu Jan 22, 2009 1:25 am   
 
$Time_LeftH=%format($Time_LeftH,2)
_________________
Taz :)
Reply with quote
chamenas
Wizard


Joined: 26 Mar 2008
Posts: 1547

PostPosted: Thu Jan 22, 2009 3:06 am   
 
Thanks, it didn't move it to 2 decimal places though so I suppose I don't know how to use format.
_________________
Listen to my Guitar - If you like it, listen to more
Reply with quote
charneus
Wizard


Joined: 19 Jun 2005
Posts: 1876
Location: California

PostPosted: Thu Jan 22, 2009 3:35 am   
 
It actually should be the other way around:

$Time_LeftH=%format(2, $Time_LeftH)

That'll keep it at 2 decimal places.

Charneus
Reply with quote
chamenas
Wizard


Joined: 26 Mar 2008
Posts: 1547

PostPosted: Thu Jan 22, 2009 4:55 am   
 
Thanks, works like a charm. Bonus question: Is there any way to isolate the two decimal places? So I could have, like...

8.50 hours, and have it chop the two so I can do the math and have 8.30 hours become

3 hours and 30 minutes ?
_________________
Listen to my Guitar - If you like it, listen to more
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Thu Jan 22, 2009 7:43 am   
 
Unfortunately, it seems that CMUD's modulus function doesn't work with floats - the way you would do this if it did is by returning the 8.5 mod 1, which gives you the remainder when dividing 8.5 by 1 - 0.5. You can then multiply that number by 60 to get the number of minutes. Then finally you round the 8.5 down to get the 8 out.

But with CMUD's modulus function only taking integers, I'm not sure. This'd be dead easy in Lua, just fyi, because it has a function to do exactly this - math.modf takes one number and returns two, the integer part and the floating-point part.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)
Reply with quote
gamma_ray
Magician


Joined: 17 Apr 2005
Posts: 496

PostPosted: Thu Jan 22, 2009 12:34 pm   
 
What I always did was %round(@number*100)/100, to split out hours and minutes you could use %round(@number) for the hours and %mod(%round(@number*100),100)*60/100 to get the minutes.
Reply with quote
chamenas
Wizard


Joined: 26 Mar 2008
Posts: 1547

PostPosted: Thu Jan 22, 2009 12:50 pm   
 
I'll try what gamma has proposed, if it doesn't work then maybe I'll have to resort to lua. I should be able to understand it, but I don't really use it much.

Edit:
Gamma's suggestion worked. I figured it would be some sort of trick with numbers and math, thanks. Laughing
_________________
Listen to my Guitar - If you like it, listen to more
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net