<?php
function mickmackusa($number, $decimals = 2, $dec_point = ',', $thousands_sep = ' ') {
$number = number_format($number, min(5, $decimals), $dec_point, $thousands_sep); // round to decimal max
return preg_replace("~".$dec_point."\d{".min(2, $decimals)."}[^0]*\K0+$~", '', $number); // trim zeros (if any, beyond minimum allowance) from right side of decimal character
}
function dersy($number, $decimals=2, $dec_point = ',', $thousands_sep = ' ') {
$decimals = (int)$decimals;
if($decimals > 5) {
$decimals = 5; //Maximum decimals limit..
}
$number = number_format((float)$number, $decimals, $dec_point, $thousands_sep);
if(strpos($number, $dec_point) === false) {
return $number; //No decimal values..
}
$splArr = explode($dec_point, $number);
$split = array_reverse(str_split($splArr[1]));
foreach($split as $cleanNum)
{
if($decimals > 2 && $cleanNum === '0') { //Keep minimum two decimals.
$number = substr($number, 0, -1);
$decimals--;
} else {
break; //Found a non zero number.
}
}
return rtrim($number,$dec_point);
}
$test = [
'1.01',
'1.044',
'0.240000',
'0.200',
'0.24540',
'0.24546',
'6500.00',
'3760.54',
'3760.000000000',
'0.04000',
'1.000000',
'1.000005'
];
for ($x=0; $x<7; ++$x) {
foreach ($test as $number) {
$mickmackusa = mickmackusa($number, $x);
$dersy = dersy($number, $x);
echo "$number & $x -> Assert: $mickmackusa (Expect: $dersy) ";
if ($mickmackusa === $dersy) {
echo "IDENTICAL\n";
} else {
echo "FAILURE\n";
}
}
}
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- 1.01 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
1.044 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
0.240000 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
0.200 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
0.24540 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
0.24546 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
6500.00 & 0 -> Assert: 6 500 (Expect: 6 500) IDENTICAL
3760.54 & 0 -> Assert: 3 761 (Expect: 3 761) IDENTICAL
3760.000000000 & 0 -> Assert: 3 760 (Expect: 3 760) IDENTICAL
0.04000 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
1.000000 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
1.000005 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
1.01 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
1.044 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
0.240000 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
0.200 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
0.24540 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
0.24546 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
6500.00 & 1 -> Assert: 6 500,0 (Expect: 6 500,0) IDENTICAL
3760.54 & 1 -> Assert: 3 760,5 (Expect: 3 760,5) IDENTICAL
3760.000000000 & 1 -> Assert: 3 760,0 (Expect: 3 760,0) IDENTICAL
0.04000 & 1 -> Assert: 0,0 (Expect: 0,0) IDENTICAL
1.000000 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
1.000005 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
1.01 & 2 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 2 -> Assert: 1,04 (Expect: 1,04) IDENTICAL
0.240000 & 2 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 2 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 2 -> Assert: 0,25 (Expect: 0,25) IDENTICAL
0.24546 & 2 -> Assert: 0,25 (Expect: 0,25) IDENTICAL
6500.00 & 2 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 2 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 2 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 2 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 2 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 2 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.01 & 3 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 3 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 3 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 3 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 3 -> Assert: 0,245 (Expect: 0,245) IDENTICAL
0.24546 & 3 -> Assert: 0,245 (Expect: 0,245) IDENTICAL
6500.00 & 3 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 3 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 3 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 3 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 3 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 3 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.01 & 4 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 4 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 4 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 4 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 4 -> Assert: 0,2454 (Expect: 0,2454) IDENTICAL
0.24546 & 4 -> Assert: 0,2455 (Expect: 0,2455) IDENTICAL
6500.00 & 4 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 4 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 4 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 4 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 4 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 4 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.01 & 5 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 5 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 5 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 5 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 5 -> Assert: 0,2454 (Expect: 0,2454) IDENTICAL
0.24546 & 5 -> Assert: 0,24546 (Expect: 0,24546) IDENTICAL
6500.00 & 5 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 5 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 5 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 5 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 5 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 5 -> Assert: 1,00001 (Expect: 1,00001) IDENTICAL
1.01 & 6 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 6 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 6 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 6 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 6 -> Assert: 0,2454 (Expect: 0,2454) IDENTICAL
0.24546 & 6 -> Assert: 0,24546 (Expect: 0,24546) IDENTICAL
6500.00 & 6 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 6 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 6 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 6 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 6 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 6 -> Assert: 1,00001 (Expect: 1,00001) IDENTICAL
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
1.01 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
1.044 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
0.240000 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
0.200 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
0.24540 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
0.24546 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
6500.00 & 0 -> Assert: 6 500 (Expect: 6 500) IDENTICAL
3760.54 & 0 -> Assert: 3 761 (Expect: 3 761) IDENTICAL
3760.000000000 & 0 -> Assert: 3 760 (Expect: 3 760) IDENTICAL
0.04000 & 0 -> Assert: 0 (Expect: 0) IDENTICAL
1.000000 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
1.000005 & 0 -> Assert: 1 (Expect: 1) IDENTICAL
1.01 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
1.044 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
0.240000 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
0.200 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
0.24540 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
0.24546 & 1 -> Assert: 0,2 (Expect: 0,2) IDENTICAL
6500.00 & 1 -> Assert: 6 500,0 (Expect: 6 500,0) IDENTICAL
3760.54 & 1 -> Assert: 3 760,5 (Expect: 3 760,5) IDENTICAL
3760.000000000 & 1 -> Assert: 3 760,0 (Expect: 3 760,0) IDENTICAL
0.04000 & 1 -> Assert: 0,0 (Expect: 0,0) IDENTICAL
1.000000 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
1.000005 & 1 -> Assert: 1,0 (Expect: 1,0) IDENTICAL
1.01 & 2 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 2 -> Assert: 1,04 (Expect: 1,04) IDENTICAL
0.240000 & 2 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 2 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 2 -> Assert: 0,25 (Expect: 0,25) IDENTICAL
0.24546 & 2 -> Assert: 0,25 (Expect: 0,25) IDENTICAL
6500.00 & 2 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 2 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 2 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 2 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 2 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 2 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.01 & 3 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 3 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 3 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 3 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 3 -> Assert: 0,245 (Expect: 0,245) IDENTICAL
0.24546 & 3 -> Assert: 0,245 (Expect: 0,245) IDENTICAL
6500.00 & 3 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 3 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 3 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 3 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 3 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 3 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.01 & 4 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 4 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 4 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 4 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 4 -> Assert: 0,2454 (Expect: 0,2454) IDENTICAL
0.24546 & 4 -> Assert: 0,2455 (Expect: 0,2455) IDENTICAL
6500.00 & 4 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 4 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 4 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 4 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 4 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 4 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.01 & 5 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 5 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 5 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 5 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 5 -> Assert: 0,2454 (Expect: 0,2454) IDENTICAL
0.24546 & 5 -> Assert: 0,24546 (Expect: 0,24546) IDENTICAL
6500.00 & 5 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 5 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 5 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 5 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 5 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 5 -> Assert: 1,00001 (Expect: 1,00001) IDENTICAL
1.01 & 6 -> Assert: 1,01 (Expect: 1,01) IDENTICAL
1.044 & 6 -> Assert: 1,044 (Expect: 1,044) IDENTICAL
0.240000 & 6 -> Assert: 0,24 (Expect: 0,24) IDENTICAL
0.200 & 6 -> Assert: 0,20 (Expect: 0,20) IDENTICAL
0.24540 & 6 -> Assert: 0,2454 (Expect: 0,2454) IDENTICAL
0.24546 & 6 -> Assert: 0,24546 (Expect: 0,24546) IDENTICAL
6500.00 & 6 -> Assert: 6 500,00 (Expect: 6 500,00) IDENTICAL
3760.54 & 6 -> Assert: 3 760,54 (Expect: 3 760,54) IDENTICAL
3760.000000000 & 6 -> Assert: 3 760,00 (Expect: 3 760,00) IDENTICAL
0.04000 & 6 -> Assert: 0,04 (Expect: 0,04) IDENTICAL
1.000000 & 6 -> Assert: 1,00 (Expect: 1,00) IDENTICAL
1.000005 & 6 -> Assert: 1,00001 (Expect: 1,00001) IDENTICAL
preferences:
291.1 ms | 413 KiB | 288 Q