我试图以公制单位存储我的所有测量值,但希望用户能够以公制或英制格式查看或提交。我使用非常精确的转换,我绝对相信我使用了正确的数字。尽管如此,每次我输入180磅,转换为kg或MySQL存储,并将其转换回lbs,结果我得到180.77905484。这是我的代码。
以千克进入数据库之前
$weight = $weight * 0.45359237;
从数据库中检索为kg
$kg_conv = 2.20462262;
echo $progress->weight * $kg_conv;
我会理解它是以百分之一磅还是几磅重,但为什么只能减掉0.77磅?
答案 0 :(得分:5)
您(某处)将您的转换千克值四舍五入。
180 * 0.45359237
是81.6466266
,没关系。
81.6465266 * 2.20462262
是179.99999985
,这也没关系。这是由于浮点引起的精度损失范围。数字和数学都很好。
但是,你没有这些数字。你不能。您的值180.77905484
是完全82
千克输入的结果。 82 * 2.20462262
是您获得的180.77905484
。
所以,在某处,无论是在写入数据库之前还是之后,您都要将转换后的公斤值180 * 0.45359237
四舍五入并从81.6466266
转为82
。< / p>