为什么MySQL将小数点后2的除法四舍五入到一个不可接受的值



我有一个包含以下数据的表:

区域VARCHAR(50(,收入决策(20,2(,费用DECIMAL(20,2(,百分比计费小数(6,2(

这些值是从电子表格中导入的,计费百分比不够精确。四舍五入到小数点后2位。我可以通过收入/支出来计算,但我没有得到我期望的值。

从中选择*将返回"计数器",-1822.90、2749.63、0.66

-1822.90/2749.63=-0.6262619……绝对值四舍五入到66.3%,这是我需要的精度。

那么,为什么当我运行以下查询时:选择区域,(收入/支出(AS计算百分比计费,百分比计费

我得到:'计数器,-1822.90,2749.63,1000000,0.66?

我的猜测是MySQL和类型有点古怪,但我不知道发生了什么。为什么MySQL会将查询中小数点后2位的除法四舍五入到1.000000?

问题在于您为PercentBilled指定的数据类型。DECIMAL(6,2)表示用6位数字存储值,其中2位在小数点后。因此,为了提高存储值的精度,您需要将列的类型更改为DECIMAL(9,6)。这将允许您的示例中的值存储为"0";0.662962〃;(即小数点后六位(。

请注意,除非您从源重新导入数据,否则简单地更新列的类型不会增加丢失的精度。简单地改变数据类型而不重新加载数据将把它改变为"0";0.660000";。

相关内容

最新更新