数据类型和扭曲的结果PHP/C#/WinForms
我对PHP和WinForms(C#)中的十进制数据类型有很多问题。看,我已经为一个客户建立了一个网站和一个订单和库存管理应用程序,但通常情况下,这些价值观都会变得扭曲。我对你们如何处理价格、折扣和运费很感兴趣。你用浮点数,双小数吗 我发誓,当我第一次开始学习PHP并使用VARCHAR进行定价时,我遇到的麻烦就少了!(我没有夸张) 在我的客户数据库中,假设我有以下内容:数据类型和扭曲的结果PHP/C#/WinForms,c#,php,.net,mysql,winforms,C#,Php,.net,Mysql,Winforms,我对PHP和WinForms(C#)中的十进制数据类型有很多问题。看,我已经为一个客户建立了一个网站和一个订单和库存管理应用程序,但通常情况下,这些价值观都会变得扭曲。我对你们如何处理价格、折扣和运费很感兴趣。你用浮点数,双小数吗 我发誓,当我第一次开始学习PHP并使用VARCHAR进行定价时,我遇到的麻烦就少了!(我没有夸张) 在我的客户数据库中,假设我有以下内容: Column Name Column Name Column Name Column Name Pr
Column Name Column Name Column Name Column Name
Price Quantity Discount LineTotal
除数量外,所有列均为十进制数据类型。数量列为int
当我进行非常基本的计算时,比如:
$LineTotal = $Price * $Quantity;
我得到了愚蠢的结果,比如:
5.98888
7.
9.111
0.4442
而且,最糟糕的是,它通常只会从计算中完全删除数字:
例如,如果乘法的结果是(或应该是):4.92
我去看看数据库,它会说:4
我的.92
美分在哪里
这是什么原因造成的?我做错什么了吗?AFAIK PHP中不支持十进制类型。因此,问题可能是关于
$LineTotal
、$Price
和$Quantity
变量中真正的类型。考虑调查使用:UMM,我不确定PHP,但是当我使用小数类型和C时,我也有奇怪的事情发生。所以我现在只使用double。
您为decimal
类型指定了多少位小数?可能您没有在小数点右侧指定位数,这就是为什么它始终是一个整数,例如,在C中,只是4
而不是4.92
,在变量后放置“m”将其转换为十进制。比如4.656M*343.2456M。。。得到结果后,在“.”后面加上两个数字,使结果更加精确。为什么这些结果“愚蠢”?你是否有这样的印象,乘法的结果总是会返回一个带有一定小数位数的结果?也许你会觉得这很有用。-1这几乎不是一个比试图了解给你(和OP)带来问题的类型更好的解决方案。这不是一个解决方案,他说他对我们如何处理定价、折扣等感兴趣。