Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Be aware that we prettify prices after conversion 😄 That code is quite long:
- if(!$specialRounding){
- //Major Tipping Points
- $majorTipped = false;
- switch ($result){
- case $result >= 89 && $result <= 111:
- $result = 100;
- $majorTipped = true;
- break;
- case $result >= 890 && $result <= 1110:
- $result = 1000;
- $majorTipped = true;
- break;
- case $result >= 8900 && $result <= 11100:
- $result = 10000;
- $majorTipped = true;
- break;
- case $result >= 89000 && $result <= 111000:
- $result = 100000;
- $majorTipped = true;
- break;
- case $result >= 890000 && $result <= 111000:
- $result = 1000000;
- $majorTipped = true;
- break;
- case $result >= 8900000 && $result <= 1110000:
- $result = 10000000;
- $majorTipped = true;
- break;
- }
- if(!$majorTipped){
- $resultBeforeTipping = $result;
- //Check Tipping Points
- $nearest_100 = round ($result, -2);
- $proximity = abs((($nearest_100 - $result) / $nearest_100)*100);
- if($proximity <= 4.5 && $result > 111.01 && $result < 889.99){
- $result = $nearest_100;
- } else{
- $nearest_1000 = round ($result, -3);
- $proximity = abs((($nearest_1000 - $result) / $nearest_1000)*100);
- if($proximity <= 4.5 && $result > 1110.01 && $result < 8899.99){
- $result = $nearest_1000;
- } else{
- $nearest_10000 = round ($result, -4);
- $proximity = abs((($nearest_10000 - $result) / $nearest_10000)*100);
- if($proximity <= 4.5 && $result > 11100.01 && $result < 88999.99){
- $result = $nearest_10000;
- } else{
- $nearest_100000 = round ($result, -5);
- $proximity = abs((($nearest_100000 - $result) / $nearest_100000)*100);
- if($proximity <= 4.5 && $result > 111000.01 && $result < 889999.99){
- $result = $nearest_100000;
- } else{
- $nearest_1000000 = round ($result, -6);
- $proximity = abs((($nearest_1000000 - $result) / $nearest_1000000)*100);
- if($proximity <= 4.5 && $result > 1110000.01 && $result < 8899999.99){
- $result = $nearest_1000000;
- }
- }
- }
- }
- }
- //If not tipped - do general intervals
- if($result == $resultBeforeTipping){
- if($result >= 17.5){
- if($result > 17.5 && $result < 50){
- $result = $this->roundToNearest($result, 5);
- } elseif($result < 100){
- $nearest_10 = round ($result, -1);
- $distance = abs($nearest_10 - $result);
- if($distance <= 3.5){
- $result = $nearest_10;
- } else{
- $result = $this->roundToNearest($result, 5);
- }
- } elseif($result < 200){
- $result = round ($result, -1);
- } elseif($result < 1000){
- $result = $this->roundToNearest($result, 50);
- } elseif($result < 5000){
- $nearest_100 = round ($result, -2);
- $distance = abs($nearest_100 - $result);
- if($distance <= 45){
- $result = $nearest_100;
- } else{
- $result = $this->roundToNearest($result, 50);
- }
- } elseif($result < 10000){
- $result = $this->roundToNearest($result, 100);
- } elseif($result < 50000){
- $nearest_1000 = round ($result, -3);
- $distance = abs($nearest_1000 - $result);
- if($distance <= 450){
- $result = $nearest_1000;
- } else{
- $result = $this->roundToNearest($result, 500);
- }
- } elseif($result < 100000){
- $result = $this->roundToNearest($result, 1000);
- } elseif($result < 500000){
- $nearest_10000 = round ($result, -4);
- $distance = abs($nearest_10000 - $result);
- if($distance <= 4500){
- $result = $nearest_10000;
- } else{
- $result = $this->roundToNearest($result, 5000);
- }
- } elseif($result < 1000000){
- $result = $this->roundToNearest($result, 10000);
- } elseif($result < 5000000){
- $nearest_100000 = round ($result, -5);
- $distance = abs($nearest_100000 - $result);
- if($distance <= 45000){
- $result = $nearest_100000;
- } else{
- $result = $this->roundToNearest($result, 50000);
- }
- } elseif($result < 10000000){
- $result = $this->roundToNearest($result, 100000);
- }
- }
- }
- }
- //Cast to int if it's not already rounded by now
- $result = (int)round($result,0);
- //Final Currency Adjustments
- if($rate < 1 && $result != 0){ //High value currencies (EUR/USD etc)
- if(($result % 10) == 0){
- $result -= 1;
- }
- } elseif($rate < 4 && $result != 0){ //Medium value currencies (NOK/SEK etc)
- if(($result % 10) == 0){
- $result -= 1;
- }
- } elseif($rate > 10){ //Low value currencies (HUF etc)
- $result -= 10;
- }
- }
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement