簡體   English   中英

轉換和舍入幫助

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM