2016-04-28 33 views
2

我有一個帶有值的隱藏字段。由於它是一個隱藏字段,我的值是一個字符串。在我的數據庫中,該值以2點精度存儲爲十進制字段。無法將字符串轉換爲浮點型PHP - Laravel 5.2

查看

<tr class="grand-total"> 
    <th>Total incl. 21% BTW:</th> 
    <?php $total = number_format($cartTotal, 2, ',', '') ?> 
    <td><strong class="grey-color">&euro;{{$total}}</strong></td> 
</tr> 

<input type="hidden" name="total" value={{$total}}> 

控制器

當我的總例如,€10.95,我得到€10.00。

事情我已經嘗試:

(float)$request->total 

floatval($request->total) 

floatval($request->total * 1.00) 

但這些都返回€10。

+0

總共是'10,95'還是'10.95'? – Aurel

+0

'10,95'是一個無效的名稱。已經改爲'10.95'作爲唯一有效的閱讀。編輯待處理。 –

回答

2

您必須提供使用從小數,而不是逗號點到單獨的整數浮點數,所以你必須輸入10.95代替10,95

很明顯,你可以使用str_replace函數,如果你仍然想使用逗號:

$myNumber = floatval(str_replace(',', '.', $myNumber)); 
3

儘管這並不直接回答這個問題,它確實會解決它在一個較長期的方式。

考慮存儲金額沒有小數 - 因此$10.00實際上存儲爲1000在您的數據庫中。

您還可以使用PHP內置函數(如money format),只要將您的本地貨幣設置爲真正解決此問題即可。

What are the downsides to storing money values as cents/minor units?

+1

這是一個很好的答案。我在構建應用程序時正在考慮它。但我沒有去做,因爲我的計算會非常複雜。但也許它應該下次嘗試。 – Christophvh

+1

我認爲計算越複雜,你應該遠離浮標,只是我的2美分(赦免雙關語) – Chris

相關問題