• 0

Javascript math with negative values


Question

I am wondering if anyone has a method to deal with negative numbers in math equations for javascript. At the moment I will sometimes get negative numbers resulting from some math done, for example I take the maximum number value in a set of information, multiply it half and add that value back:


var maxLength = 100;
var minLength = 1;
var LengthBuffer = maxLength * .5;
var endLengthRange = maxLength + LengthBuffer ;
var startLengthRange = minLengthBuffer - LengthBuffer;


// The above should yield 150 and -49, the issue is in the next part.
// Due to needing to find a median between the end of this range and
// the start (which here should be 199/2) the following math does not work correctly

var lengthRange = endLengthRange - startLengthRange;


//this will return 101 and not 199.
[/CODE]

4 answers to this question

Recommended Posts

  • 0

I've been testing this in Chrome but I get the same answer in FF as well. I'll post the code up that I'm working with.


function randomFromTo(from, to){
return Math.round(Math.random() * (to - from + 1) + from);
}
randomFromTo(10,20); //18
randomFromTo(10,20); //10
randomFromTo(10,20); //15
randomFromTo(10,20); //20
var carPrices = new Array();
var carMiles = new Array();
var allCars = new Array();
for (i=0;i<400;i++) {
allCars[i] = new Array();
allCars[i][0] = "car "+(i+1);
allCars[i][1] = randomFromTo(1000,500000); //miles
allCars[i][2] = randomFromTo(5000,50000); //dollars
//document.write(allCars[i][0]+' Miles: '+allCars[i][1]+' Price $'+allCars[i][2]+'<br />')
}





totalMile = 0;
totalPrice = 0;
for(var i = 0; i < allCars.length - 1; ++i){
//document.write(totalMile+" + "+allCars[i][1]+" =");
totalMile = totalMile + allCars[i][1];
totalPrice = totalPrice + allCars[i][2];

carMiles [i] = allCars[i][1];
carPrices [i] = allCars[i][2];

//document.write(totalMile+'<br
}
//document.write(totalMile);
var totalCars = allCars.length;

var largestPrice = Math.max.apply(Math, carPrices);
var largestMiles = Math.max.apply(Math, carMiles);
var smallestPrice = Math.min.apply(Math, carPrices);
var smallestMiles = Math.min.apply(Math, carMiles);

var yourCar = new Array();
yourCar[0] = new Array();
yourCar[0][0] = 'car1';
yourCar[0][1] = 20000;
yourCar[0][2] = 25000;



var bufferMiles = largestMiles*.5;
var bufferPrice = largestPrice*.5;
// document.write('Your is '+yourCar[0][0]+' with '+yourCar[0][1]+' miles and is priced at $'+yourCar[0][2]+'<br />');
var yourCarMiles = yourCar[0][1];
var yourCarPrice = yourCar[0][2];
var startPriceRange = smallestPrice-bufferPrice;
var startMileRange = smallestMiles-bufferMiles;
var averageMile = totalMile/totalCars;
var averagePrice = totalPrice/totalCars;
var mileRangeEnd = largestMiles+bufferMiles;
var priceRangeEnd = largestPrice+bufferPrice;
var mileRange = mileRangeEnd - startMileRange; // Does not yield correct value
var priceRange = priceRangeEnd - startPriceRange; // Does not yield correct value
var mileMedian = mileRange*.5;
var priceMedian = priceRangeEnd*.5;
//document.write('Averagece: $' + averagePrice +'<br />');
//document.write('Averageeage: ' + averageMile +'<br />');
//document.write('numbercars: '+totalCars+'<br />');
//document.write('Highesteage: '+largestMiles+'<br />');
//document.write('Highestce: '+largestPrice+'<br />');
//document.write('Lowestce: '+smallestPrice+'<br />');
//document.write('Lowesteage: '+smallestMiles+'<br />');
document.write(mileRangeEnd+' - '+startMileRange+' = '+mileMedian+'<br />');
document.write('Middlee Range: '+priceMedian+'<br />');
document.write('Middlece Range: '+priceMedian+'<br />');
document.write('Middlee Range: '+mileMedian+'<br />');
[/CODE]

  • 0

Well, I'm stumped. From both your example code and your actual code, I'm always getting the values you're expecting. For example, startPriceRange gets set to -19590. priceRangeEnd gets set to 74442. priceRange gets (properly) set to 94032.

Tested in Safari, Chrome, and Firefox.

Edit: Is this the part that's confusing you?:

document.write(mileRangeEnd+' - '+startMileRange+' = '+mileMedian+'<br />');[/CODE]

If I'm understanding this correctly, you should be outputting mileRange in that example, not mileMedian.

This topic is now closed to further replies.
  • Posts

    • They are shifting into AI now. Don't you see?
    • Exactly. No need to pay to rent a license. I'd rather own it.
    • Weekend PC Game Deals: Automation fests, Civilization for free, charity specials, and more by Pulasthi Ariyasinghe Weekend PC Game Deals is where the hottest gaming deals from all over the internet are gathered into one place every week for your consumption. So kick back, relax, and hold on to your wallets. The Epic Games Store unlocked a big strategy game giveaway earlier this week: Civilization VI: Platinum Edition. Coming in from Firaxis Games, the turn-based 4X experience has you starting world-conquering campaigns to explore, expand, exploit, and exterminate everything in your empire's reach. PvP and co-op multiplayer are also options if the various forms of AI prove to be too easy or even too troublesome. The Sid Meier’s Civilization VI: Platinum Edition giveaway is live until July 24, and it comes with two massive expansions as well as six DLC packs with extra scenarios, leaders, and more. Next week, tower defense title Legion TD 2 will become the latest freebie on the Epic Games Store. The Humble Store brought a new bundle for action game fans this weekend, and it's all about the Devil May Cry franchise. The Devil Trigger Collection begins with DmC: Devil May Cry and Devil May Cry HD Collection for $10. If you want to complete the bundle, it will set you back $20, which gets you Devil May Cry 4 Special Edition as well as the most recent entry, Devil May Cry 5, as well as its Vergil DLC. This bundle has two weeks left on its counter before it goes away. Big Deals Most publishers are returning to their usual weekend specials after the massive summer sales, so there are plenty of discounts to go around. There's even a special Make a Wish charity sale running on Steam with some discounted viral hits. With all those and more, here's our hand-picked big deals list for the weekend: Satisfactory – $27.99 on Steam Captain of Industry – $24.49 on Steam No Man's Sky – $23.99 on Steam Persona 5 Royal – $23.99 on Steam No More Room in Hell 2 – $22.49 on Steam FOUNDRY – $20.99 on Steam Banishers: Ghosts of New Eden – $19.99 on Steam SULFUR – $19.99 on Steam Assassin's Creed Mirage – $19.99 on Steam Alan Wake 2 – $19.99 on Epic Store Grand Theft Auto V Enhanced – $19.79 on Steam Norland – $19.49 on Steam Stray – $17.99 on Steam V Rising – $17.49 on Steam Dyson Sphere Program – $15.99 on Steam The Outlast Trials – $15.99 on Steam Warhammer 40,000: Darktide – $15.99 on Steam The Outlast Trials – $15.99 on Steam Red Dead Redemption 2 – $14.99 on Steam Turing Complete – $13.99 on Steam Eden Crafters – $13.99 on Steam Core Keeper – $13.99 on Steam Thank Goodness You're Here! – $12.99 on Steam Opus Magnum – $9.99 on Steam Autonauts – $9.99 on Steam EXAPUNKS – $9.99 on Steam DRAGON BALL XENOVERSE 2 – $9.99 on Steam Superliminal – $9.99 on Steam Heaven's Vault – $9.99 on Steam RAILGRADE – $9.89 on Steam Goat Simulator 3 – $9.89 on Steam Tchia – $9.89 on Steam ACE COMBAT 7: SKIES UNKNOWN – $9.59 on Steam PAYDAY 3 – $8.99 on Steam Assassin's Creed Origins – $8.99 on Steam Viewfinder – $8.74 on Steam Escape Academy – $7.99 on Steam Pit People – $7.99 on Steam Skull and Bones – $7.99 on Steam Immortals Fenyx Rising – $7.99 on Steam Imperator: Rome – $7.59 on Steam SHENZHEN I/O – $7.49 on Steam Tom Clancy’s The Division 2 – $7.49 on Steam Bassmaster Fishing – $7.49 on Steam Let's Build a Zoo – $6.99 on Steam The Forgotten City – $6.24 on Steam Control Ultimate Edition – $5.99 on Steam Bramble: The Mountain King – $5.99 on Steam Assassin’s Creed Rogue – $5.99 on Steam RoboCop: Rogue City – $4.99 on Steam Kingdom Two Crowns – $4.99 on Steam Scott Pilgrim vs. The World: The Game – $4.94 on Steam Castle Crashers – $4.49 on Steam BattleBlock Theater – $4.49 on Steam TOEM: A Photo Adventure – $3.99 on Steam Supraland – $3.99 on Steam Vampire Survivors – $3.99 on Steam Darkwood – $3.74 on Steam Valiant Hearts: The Great War – $3.74 on Steam TIS-100 – $3.49 on Steam PAYDAY 2 – $3.29 on Steam Cake Bash – $2.99 on Steam Ragnarock – $1.99 on Steam Alan Wake – $1.49 on Steam Civilization VI Platinum Edition – $0 on Epic Store DRM-free Specials Lastly, here are some highlights from the DRM-free discounts available on the GOG store this weekend: Age of Wonders 4 - $29.99 on GOG Pathfinder: Wrath of the Righteous - Game of the Year Edition - $19.99 on GOG Tomb Raider IV-VI Remastered - $19.49 on GOG The Thaumaturge - $19.24 on GOG Chained Echoes - $13.74 on GOG Tyranny - Gold Edition - $12.49 on GOG Tomb Raider I-III Remastered Starring Lara Croft - $11.99 on GOG Baldur's Gate: Enhanced Edition - $9.99 on GOG Baldur's Gate II: Enhanced Edition - $9.99 on GOG Neverwinter Nights: Enhanced Edition - $9.99 on GOG Old World - $9.99 on GOG Icewind Dale: Enhanced Edition - $9.99 on GOG Neverwinter Nights: Doom of Icewind Dale - $7.99 on GOG Kingdom Come: Deliverance - $5.99 on GOG Might and Magic 6-pack Limited Edition - $4.99 on GOG Heroes of Might and Magic 3: Complete - $4.99 on GOG Blood Omen: Legacy of Kain - $3.49 on GOG Might and Magic 8: Day of the Destroyer™ - $2.99 on GOG Worms Armageddon - $2.99 on GOG ATOM RPG: Post-apocalyptic indie game - $2.99 on GOG Keep in mind that availability and pricing for some deals could vary depending on the region. That's it for our pick of this weekend's PC game deals, and hopefully, some of you have enough self-restraint not to keep adding to your ever-growing backlogs. As always, there are an enormous number of other deals ready and waiting all over the interwebs, as well as on services you may already subscribe to if you comb through them, so keep your eyes open for those, and have a great weekend.
  • Recent Achievements

    • One Month Later
      Helen Shafer earned a badge
      One Month Later
    • One Month Later
      ambani880 earned a badge
      One Month Later
    • Week One Done
      ambani880 earned a badge
      Week One Done
    • First Post
      artistro08 earned a badge
      First Post
    • First Post
      paul29 earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      498
    2. 2
      ATLien_0
      223
    3. 3
      Michael Scrip
      196
    4. 4
      Xenon
      161
    5. 5
      +FloatingFatMan
      138
  • Tell a friend

    Love Neowin? Tell a friend!