我有一个小的PHP网络表单,用于在SQLite数据库中存储商品和价格。
在PHP增加其值* 100后,我以整数形式存储价格(因此,我间接将四舍五入为小数点后第二位的价格):
$form_Price = intval($form_Price*100);
$query = "insert into items values ($form_Name,$form_Price)";
$results = $db->querySingle($query);
它通常可以正常工作,直到今天为止都没有问题...我得到了标价为2.28美元的商品。当我使用PHP表单存储它时,该字段显示值=“ 227”而不是“ 228”。我尝试了不同的时间,我以为某个地方有一个四舍五入的错误,但似乎找不到此错误。
如果我手动将值作为“ 228”整数插入数据库,则使用此代码的形式
$select_Price = intval($select_Price)/100;
print "Price: $select_price";
显示正确的价格“ 2.28”。因此,我认为问题出在保存价格的PHP表单和接受查询的sqlite dabase之间。
我知道我应该验证并清理表单和SQL查询,但是此“事物”仅由我自己用作练习,在互联网上是无法到达的。
编辑:如@IncredibleHat所述,用round()替换intval()实际上解决了我的问题。