2011-09-03 50 views
18

译注:学说2 - 2位小数位在浮点数上吗?

/** 
* @ORM\Column(type="float", scale="2") 
*/ 
protected $curr_price; 

我使用它的Symfony 2

而且这个领域变成一个双在MySQL数据库,而不是2点精度浮点数。

我在做什么错?我试图删除数据库,重新插入等...

+1

为浮动点(通常虽然不是与你的问题,存储价格)一个非常糟糕的做法。 – Martijn

+0

请详细说明。 – Tool

+0

请参阅http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when。 – Martijn

回答

27

precisionscale属性只能使用decimal映射类型(link)。我建议你使用decimal类型。

至于为什么它创建一个双字段而不是float字段,我不完全确定。它可能与兼容所有支持的数据库有关。我没有看到double映射类型,所以我认为它们都使用相同的类型。

8
在*

.yml

curr_price: 
    type: decimal 
    precision: 10 
    scale: 2 
7
/** 
* @ORM\Column(type="float", scale=2) 
*/ 
protected $curr_price; 

规模应该是一个整数,您使用的是串

+0

根据[文档](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping): * scale :(可选,默认值0)十进制(精确数字)列的比例(**仅适用于十进制列**),它表示小数点右侧的位数,且不得大于精度。* –