PDA

View Full Version : Parsing numbers...

Tanker
Jul 27th, 2002, 09:36 AM
Its late and i'm sure im not thinking streight but what I want to do is take a number like 32658 and break it out to its 10's, 100's, 1000's values. So we would end up with the following numbers

32
6
5
8

Cloudski
Jul 27th, 2002, 12:45 PM
Try this:

<script>
var number = 32658
thsnds = number/1000
number = number - (thsnds * 1000)
hundreds = number/100
number = number - (hundreds * 100)
tens = number/10
number = number - (tens * 10)
</script>

I think you can modify it for your needs from here....

Hope that helps :thumbsup:

x_goose_x
Jul 27th, 2002, 06:22 PM
for the above script to work, you need to floor each result:

var number = 32658
thsnds = Math.floor(number/1000)
number = number - (thsnds * 1000)
hundreds = Math.floor(number/100)
number = number - (hundreds * 100)
tens = Math.floor(number/10)
number = number - (tens * 10)
document.write(thsnds+" - "+hundreds+" - "+tens+" - "+number)

But what I suggest is something a little more expandable:

var number = "32658";
digits = new Array();
for (x=0; x<number.length; x++) {
digits[x] = number.charAt(x);
}

The only problem is that "32" (thousand) is considered "3" and "2", but I don't see the point to keeping them together.

Tanker
Jul 27th, 2002, 10:49 PM
Ok, I guess a little reasoning behind the code... :)

I play everquest, in the game you can become a trader, it creates a file of the items you have with the price that you want for it in copper pieces (dnd folks should remember this). I need to conver the number of copper pieces in this list to their respective platinum / gold / silver / copper (if any copper left over). It breaks down to
10 copper = 1 silver
10 silver = 1 gold
10 gold = 1 platinum

so 32658 copper would work out to 32pp, 6gp, 5sp, 8cp

hopefully this helps. Thanks again for all the suggestions.

Jul 29th, 2002, 01:12 AM
<html>
<title>untitled</title>
<script type="text/javascript" language="JavaScript">

function cash_in(copper) {
var tempObj = new Object();
tempObj.pp = parseInt(copper/1000);
tempObj.gp = parseInt(copper%1000/100);
tempObj.sp = parseInt(((copper%1000)%100)/10);
tempObj.cp = (((copper%1000)%100)%10);
tempObj.print = function() {
return 'PLATINUM: ' + this.pp + 'pp\nGOLD: ' + this.gp + 'gp\n' +
'SILVER: ' + this.sp + 'sp\nCOPPER: ' + this.cp + 'cp\n';
}
return tempObj;
}

function demo() {
var c = prompt('Enter number of copper pieces:','cp');
c = c.replace(/,/g, '');
if (!isNaN(Number(c))) {
c = cash_in(Number(c));