[英]Conversion and rounding help
我需要將磅轉換為公斤,反之亦然——並將數字四舍五入到最接近的四分之一(可能是一半)。 我需要能夠進行轉換,進行轉換並將其轉換回來,並且所有值仍然相同。
示例代碼:
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;
}
output 第一行是正確的:
1 => 1 => 0.5 => 0.5
第二個不正確:
1.25 => 1 => 0.5 => 0.5
(值1
應該是1.25
)
我該怎么做呢? 顯然,我不是在尋找轉換的精度。 我只需要能夠將這些不精確的值來回轉換為相同的數字。
編輯1:
這樣做的原因是我將允許用戶以厘米、米或英尺/英寸為單位輸入他們的身高——然后將他們輸入的任何值保存為厘米(因此,第一次轉換)。 然后,用戶可以以厘米、米或英尺/英寸為單位查看他們的身高(因此,可能再次進行轉換)。
因此,假設用戶以英尺/英寸為單位輸入他們的身高,我需要以厘米為單位進行存儲。 然后用戶可能希望再次以英尺/英寸為單位查看該高度——這意味着我需要將厘米轉換回原始英尺/英寸值。
用戶可能僅限於輸入和查看以四分之一為增量的值。 意思是,5'8.25" 是有效的,但不是 5'8.39"。
請勿在 function 本身中四舍五入。 Go 盡可能精確。 僅在顯示之前進行舍入。
如果在函數中四舍五入,則將 ROUNDED 值放入下一個 function。 如果你繼續這樣做,你會失去很多精度,而且你循環的次數越多,你得到的結果就越不精確。
你正在四舍五入的精度。 您打印出來的$pounds
從原始值 ( $i
) 轉換為圓形 function 的公斤,然后用圓形 function 轉換回磅; round()
導致您的值收斂。
您四舍五入到小數點后 0 位,因此 1.25 被四舍五入為 1。嘗試刪除 round() function 看看會發生什么。
http://php.net/manual/en/function.round.php
編輯
要解決您的評論更改:-
$kilograms = convert_pounds_to_kilograms($i);
至:-
$kilograms = round(convert_pounds_to_kilograms($i), 0);
並從函數內部刪除 round() 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.