3v4l.org

run code in 300+ PHP versions simultaneously
<?php function fractionToDecimal($fraction) { // Split fraction into whole number and fraction components preg_match('/^(?P<whole>\d+)?\s?((?P<numerator>\d+)\/(?P<denominator>\d+))?$/', $fraction, $components); // Extract whole number, numerator, and denominator components $whole = $components['whole'] ?: 0; $numerator = $components['numerator'] ?: 0; $denominator = $components['denominator'] ?: 0; // Create decimal value $decimal = $whole; $numerator && $denominator && $decimal += ($numerator/$denominator); return $decimal; } function decimalToFraction($decimal) { // Determine decimal precision and extrapolate multiplier required to convert to integer $precision = strpos(strrev($decimal), '.') ?: 0; $multiplier = pow(10, $precision); // Calculate initial numerator and denominator $numerator = $decimal * $multiplier; $denominator = 1 * $multiplier; // Extract whole number from numerator $whole = floor($numerator / $denominator); $numerator = $numerator % $denominator; // Find greatest common divisor between numerator and denominator and reduce accordingly $factor = gmp_intval(gmp_gcd($numerator, $denominator)); $numerator /= $factor; $denominator /= $factor; // Create fraction value $fraction = []; $whole && $fraction[] = $whole; $numerator && $fraction[] = "{$numerator}/{$denominator}"; return implode(' ', $fraction); } // Examples var_dump(fractionToDecimal('1/25')); var_dump(fractionToDecimal('2 3/4')); var_dump(fractionToDecimal('6/4')); var_dump(decimalToFraction(1.375)); var_dump(decimalToFraction(3)); var_dump(decimalToFraction(2.875));

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.4.120.0150.00620.83
8.4.110.0090.01122.66
8.4.100.0120.00918.35
8.4.90.0110.00718.95
8.4.80.0040.00518.04
8.4.70.0050.00317.89
8.4.60.0110.00522.47
8.4.50.0110.00918.94
8.4.40.0090.00619.58
8.4.30.0100.00720.62
8.4.20.0110.01120.71
8.4.10.0060.00319.92
8.3.250.0110.00819.15
8.3.240.0120.00716.90
8.3.230.0120.00817.23
8.3.220.0050.00517.63
8.3.210.0130.00718.89
8.3.200.0060.00316.91
8.3.190.0100.01317.60
8.3.180.0040.00618.84
8.3.170.0030.01517.47
8.3.160.0100.00720.81
8.3.150.0130.00617.35
8.3.140.0030.00617.68
8.3.130.0060.00318.55
8.3.120.0030.00619.09
8.3.110.0190.00618.81
8.3.100.0240.00518.85
8.3.90.0240.00821.71
8.3.80.0250.00518.02
8.3.70.0290.00517.03
8.3.60.0270.00317.14
8.3.50.0190.00721.59
8.3.40.0170.01018.61
8.3.30.0160.01218.62
8.3.20.0180.00819.40
8.3.10.0130.00920.88
8.3.00.0080.00620.05
8.2.290.0130.00720.67
8.2.280.0090.01118.84
8.2.270.0090.00017.24
8.2.260.0110.00416.77
8.2.250.0040.00416.95
8.2.240.0080.00317.39
8.2.230.0160.00719.60
8.2.220.0160.01220.35
8.2.210.0200.00421.71
8.2.200.0180.00717.71
8.2.190.0230.00617.73
8.2.180.0220.00717.74
8.2.170.0260.00220.46
8.2.160.0180.01120.24
8.2.150.0200.00421.13
8.2.140.0160.00721.12
8.2.130.0220.00321.92
8.2.120.0170.00621.99
8.2.110.0170.01219.40
8.2.100.0190.00418.26
8.2.90.0170.00618.23
8.2.80.0150.01018.03
8.2.70.0200.00617.84
8.2.60.0160.00717.96
8.2.50.0210.00317.91
8.2.40.0200.00618.11
8.2.30.0150.00518.16
8.2.20.0100.00618.04
8.2.10.0120.00618.46
8.2.00.0150.00518.51
8.1.330.0130.00622.08
8.1.320.0120.00716.55
8.1.310.0000.00818.72
8.1.300.0060.01020.29
8.1.290.0180.00923.63
8.1.280.0200.01021.23
8.1.270.0190.00519.21
8.1.260.0220.00322.07
8.1.250.0210.00522.76
8.1.240.0140.01018.71
8.1.230.0190.00519.51
8.1.220.0140.00918.21
8.1.210.0140.01118.38
8.1.200.0200.00517.62
8.1.190.0210.00217.72
8.1.180.0150.00817.70
8.1.170.0210.00418.14
8.1.160.0150.00618.15
8.1.150.0170.00418.30
8.1.140.0170.00618.82
8.1.130.0160.00818.57
8.1.120.0160.00317.76
8.1.110.0120.00417.82
8.1.100.0120.00217.85
8.1.90.0090.00317.77
8.1.80.0080.00517.68
8.1.70.0100.00617.64
8.1.60.0130.00517.87
8.1.50.0150.00717.76
8.1.40.0100.00817.95
8.1.30.0090.01017.96
8.1.20.0180.00417.91
8.1.10.0140.00317.91
8.1.00.0140.00617.84
8.0.300.0180.00418.68
8.0.290.0150.00717.10
8.0.280.0180.00117.55
8.0.270.0170.00417.54
8.0.260.0180.00318.16
8.0.250.0130.00617.21
8.0.240.0120.00717.14
8.0.230.0150.00617.10
8.0.220.0140.00617.05
8.0.210.0140.00517.13
8.0.200.0120.00817.14
8.0.190.0150.00617.13
8.0.180.0140.00417.10
8.0.170.0130.00817.15
8.0.160.0140.00517.22
8.0.150.0170.00417.08
8.0.140.0150.00617.07
8.0.130.0140.00515.83
8.0.120.0120.00817.08
8.0.110.0190.00117.08
8.0.100.0210.00117.09
8.0.90.0150.00516.96
8.0.80.0150.00517.17
8.0.70.0170.00317.09
8.0.60.0090.00816.99
8.0.50.0130.00617.06
8.0.30.0120.01017.14
8.0.20.0140.01017.25
8.0.10.0060.01017.35
8.0.00.0150.00817.26
7.4.330.0160.00316.45
7.4.320.0170.00217.48
7.4.300.0110.00816.77
7.4.290.0160.00416.81
7.4.280.0150.00516.79
7.4.270.0140.00516.98
7.4.260.0160.00315.70
7.4.250.0140.00516.89
7.4.240.0140.00516.88
7.4.230.0160.00316.81
7.4.220.0130.00516.80
7.4.210.0150.00916.93
7.4.200.0130.00616.77
7.4.190.0140.01016.80
7.4.180.0180.00616.86
7.4.160.0130.00317.00
7.4.150.0220.00316.65
7.4.140.0140.00617.00
7.4.130.0130.00316.85
7.4.120.0100.00816.84
7.4.110.0100.00816.83
7.4.100.0130.00617.02
7.4.90.0090.00816.78
7.4.80.0150.00617.49
7.4.70.0120.00916.77
7.4.60.0070.01016.86
7.4.50.0130.00516.78
7.4.40.0110.00716.79
7.4.30.0140.00416.76
7.4.20.0140.00416.81
7.4.10.0090.00816.84
7.4.00.0120.00716.67
7.3.330.0100.00516.60
7.3.320.0100.00315.47
7.3.310.0100.00316.63
7.3.300.0080.00516.62
7.3.290.0100.00716.60
7.3.280.0070.01016.58
7.3.270.0120.00416.56
7.3.260.0150.00416.70
7.3.250.0120.00516.44
7.3.240.0140.00516.63
7.3.230.0110.00816.69
7.3.220.0110.00716.48
7.3.210.0110.00616.60
7.3.200.0120.00716.64
7.3.190.0120.00516.66
7.3.180.0130.00716.65
7.3.170.0110.00716.67
7.3.160.0080.01216.63
7.3.150.0100.00716.54
7.3.140.0080.01016.68
7.3.130.0110.00616.67
7.3.120.0140.00316.61
7.3.110.0060.01116.59
7.3.100.0130.00416.67
7.3.90.0090.00716.94
7.3.80.0140.00516.76
7.3.70.0100.00816.73
7.3.60.0140.00416.63
7.3.50.0110.00716.76
7.3.40.0100.00616.73
7.3.30.0120.00516.67
7.3.20.0110.00717.59
7.3.10.0100.00717.61
7.3.00.0120.00917.57
7.2.340.0130.00516.87
7.2.330.0080.01216.92
7.2.320.0090.00916.81
7.2.310.0120.00616.89
7.2.300.0100.00916.96
7.2.290.0090.00916.88
7.2.280.0160.00416.92
7.2.270.0140.00416.84
7.2.260.0110.00617.34
7.2.250.0070.01016.96
7.2.240.0110.00716.96
7.2.230.0090.00916.86
7.2.220.0140.00616.85
7.2.210.0140.00416.90
7.2.200.0110.00817.03
7.2.190.0130.00516.96
7.2.180.0120.00616.98
7.2.170.0110.00616.99
7.2.160.0090.00816.96
7.2.150.0110.00717.83
7.2.140.0130.00517.93
7.2.130.0100.00817.89
7.2.120.0120.00717.80
7.2.110.0120.00817.85
7.2.100.0100.00817.84
7.2.90.0130.00617.92
7.2.80.0150.00517.86
7.2.70.0110.00817.91
7.2.60.0070.01117.95
7.2.50.0120.00817.90
7.2.40.0150.00717.94
7.2.30.0170.00617.92
7.2.20.0140.00717.93
7.2.10.0140.00717.91
7.2.00.0170.00417.91

preferences:
27.57 ms | 403 KiB | 5 Q