2016-04-15 38 views
0

我很難解決這個問題。C#十進制轉換爲浮動並插入sql浮動列

我正在使用具有名爲balance的列的企業數據庫表,它是float

我試圖插入一個decimal值。現在在C#中,我試着將小數點轉到2位,然後將它插入列,它只是做到這一點。 56.4000015258789當我的價值是56.40

我在插入前調試,它是四捨五入的。我無法更改該列。 。 。我如何解決這個問題?

我知道它與sql如何考慮分數有關。

我嘗試格式化十進制字符串,然後將其解析爲一個浮點數,並沒有工作。

+1

C#中的'float'只有7位數的精度,並且不能完全表示所有非整數值。試試'double'。如果你需要在SQL中保留十進制表示,請使用「decimal」列,而不是 –

+0

@DStanley我無法更改該列,這確實令人沮喪。 –

+0

@AdamV問題在於插入前的浮點值被四捨五入。但當它由於某種原因進入sql內部開始編寫訓練數字時。 –

回答

1

很確定的原因是SQL接近浮點數和雙精度值。沒有辦法解決這個問題,這是數據如何存儲在數據庫中的一個基本特徵。如果是我在這個位置,我會重新評估爲什麼我不能改變列。

你的選擇是這樣的:

  1. 回合之前,在你的SELECT語句中使用的數據。
  2. 創建一個由PK連接的單獨表格,並在其中存儲精確值 。

我不喜歡這兩種選擇都是誠實的。