2016-03-03 19 views
2

所以我在實體得到這個,Symfony2的實體收益浮動較小的浮動則在分貝

/** 
* @ORM\Column(type="float", nullable=true) 
* @Assert\Range( min = "-180", 
*     max = "180") 
* 
*/ 
protected $longitude; 

,我這樣做的public function getLongitude()

var_dump($this->longitude); exit(); 

時,這是印刷

float 4.5003715 

但在數據庫中的值是

4.500371500000028 

無法弄清楚。有小費嗎 ?


編輯:

@ORM\Column(type="float", nullable=true, precision=11, scale=8) 

改變這一點,但仍返回

float 4.5003715 
+0

你可以scale'加上'你列定義'@ORM \列(TYPE = 「浮動」,可爲空=真,規模= 15)' –

+0

不會改變任何東西:( – Falko

+0

太不好的,你在添加行後更新了數據庫模式嗎? –

回答

1

float是precission損失類型,改變你的類型decimal如果你想要得到確切值。喜歡的東西:

@Column(type="decimal", precision=18, scale=15) 
+0

這會在我的數字結尾處產生很多0。 – Falko

+0

0在您的數字末尾不會改變它們的「值」, 1.5等於1.500000000000 – Pipe

+0

我使用'precision = 16,scale = 15'根據您的示例編號'4.500371500000028'。但是讀取「斷言範圍」,如果要存儲「179.500371500000028」,則必須使用'precision = 18,scale = 15'。我更新了我的答案。 – Pipe