Мне нужно перевести фунты в килограммы и наоборот - и округлить число до ближайшей четверти (и, возможно, до половины). Мне нужно иметь возможность выполнить преобразование, принять это преобразование и преобразовать его обратно, и все значения должны быть одинаковыми.
Пример кода:
for ($i = 1; $i <= 100; $i = $i + .25)
{
$kilograms = convert_pounds_to_kilograms($i);
$pounds = convert_kilograms_to_pounds($kilograms);
$new_kilograms = convert_pounds_to_kilograms($pounds);
echo ("$i => $pounds => $kilograms => $new_kilograms<br/>");
}
function convert_pounds_to_kilograms($pounds)
{
assert(is_numeric($pounds) === TRUE);
$kilograms = $pounds * 0.45359237;
// Round to the nearest quarter
$kilograms = round($kilograms * 4, 0) / 4;
return $kilograms;
}
function convert_kilograms_to_pounds($kilograms)
{
assert(is_numeric($kilograms) === TRUE);
$pounds = $kilograms * 2.20462262185;
// Round to the nearest quarter
$pounds = round($pounds * 4, 0) / 4;
return $pounds;
}
Первая строка вывода верна:
1 => 1 => 0.5 => 0.5
Второе неверно:
1.25 => 1 => 0.5 => 0.5
(значение 1
должно было быть 1.25
)
Как мне это сделать? Я не ищу точности в преобразовании, очевидно. Мне просто нужно иметь возможность конвертировать эти неточные значения туда и обратно в одно и то же число.
РЕДАКТИРОВАТЬ 1:
Причина этого в том, что я буду позволять пользователям вводить их рост в сантиметрах, метрах или футах / дюймах, а затем сохранять любое введенное значение в сантиметрах (таким образом, первое преобразование). Затем пользователи могут просматривать свою высоту в сантиметрах, метрах или футах / дюймах (таким образом, снова возможное преобразование).
Итак, скажем, пользователь вводит свою высоту в футах / дюймах, мне нужно хранить это в сантиметрах. Затем пользователь может захотеть снова увидеть эту высоту в футах / дюймах - это означает, что мне нужно преобразовать сантиметры обратно в исходное значение в футах / дюймах.
Пользователи, вероятно, будут ограничены вводом и просмотром значений с шагом в четверть. Значение 5'8.25 "является действительным, но не 5'8.39".