作为输入,我想接受以下任何一项:“$12.33”、“14.92”、“$13”、“17”、“14.00001”。作为输出,我分别想要 1233、1492、1300、1700 和 1400。这显然不像看起来那么容易:
<?php
$input = '$64.99'; // value is given via form submission
$dollars = str_replace('$', '', $input); // get rid of the dollar sign
$cents = (int)($dollars * 100) // multiply by 100 and truncate
echo $cents;
?>
这将输出 6498 而不是 6499。
我认为这与浮点值的不准确性有关,避免这些是我首先转换为整数美分的全部原因。我想我可以使用类似“去掉 $ 符号,检查是否有小数点,如果有,检查在填充到两个并截断之后有多少个字符,然后删除句点,如果没有的话一个附加两个零并希望最好”,但为此使用字符串操作似乎很荒谬。
当然,从表单中获取货币价值并将其作为美分存储在数据库中是一种常见的用例。当然有一种“合理”的方式来做到这一点。
正确的?.....正确的?:<