我在PHP和WinForms(C#)中使用Decimal数据类型存在很多问题。看,我已经为客户建立了一个网站和一个订单和库存管理应用程序,但通常这些价值都会变得非常棘手。我对你如何处理定价,折扣和运费感兴趣。你用浮点数,双十进制数吗?
我发誓,当我第一次开始学习PHP并使用VARCHAR定价时,我遇到了麻烦! (而且我不是在宣传)
在我的客户数据库中,假设我有以下内容:
Column Name Column Name Column Name Column Name
Price Quantity Discount LineTotal
ALl列是十进制数据类型,但Quantity除外。数量列是int。
当我进行非常基本的计算时,例如:
$LineTotal = $Price * $Quantity;
我得到了愚蠢的结果,如下:
5.98888
7.
9.111
0.4442
而且,最重要的是,它通常只会从计算中完全删除数字:
例如,如果乘法的结果是(或应该):4.92
我将查看数据库,它会说:4
我的.92
美分在哪里?
导致这种情况的原因是什么?我做错了吗?
答案 0 :(得分:2)
AFAIK PHP中没有小数类型支持。所以问题可能在于$LineTotal
,$Price
和$Quantity
变量中的实际类型。考虑使用http://php.net/manual/en/function.gettype.php
答案 1 :(得分:-2)
嗯,我不确定PHP,但是当我使用十进制类型和C#时,我发生了奇怪的事情。所以我现在只使用双倍。