簡體   English   中英

Linq2Sql浮動被破壞了

[英]Linq2Sql float getting mangled

我的數據庫中有兩個字段定義為浮點數

[Longitude] [float] NULL
[Latitude] [float] NULL

我已將它們添加到我的linq2sql dbml中,它們顯示為浮動,如下所示 在此輸入圖像描述

我可以在我的數據庫中看到Longitude的值為-3.6607431但是當我分析sql(使用sql express和自定義分析器工具)時,我看到查詢中傳遞的實際值是3.6607429981231689。

它似乎已經失去了負號,並增加了額外的價值。

有沒有我缺少的東西SQL中的浮點數沒有映射到dbml中這樣的浮點數,還是有另一個問題發生

C#中的值-3.6607431f實際上正好是 -3.6607429981231689453125 - 即這是可以准確表示的浮點值,最接近-3.6607431 所以我認為這回答了精度部分 - 它只是二進制浮點的自然部分。 基本上,你不必擔心 - 除非你需要精確的十進制值,在這種情況下你應該映射到decimal而不是float (並適當地更新你的數據庫模式)。

標志問題有些不同 - 我的猜測是你在某個地方誤診了它,或者你有一些否定事情的代碼。 我非常懷疑這是一個數據庫問題。

從您的描述中不清楚您是在獲取結果還是在查詢中傳遞參數(您談論的是“在查詢中傳遞的值”,這可能意味着兩種方式)。 如果您可以顯示所涉及的代碼以及您如何診斷問題,那將有所幫助。

浮點數僅在一定程度上是准確的,並且具有您描述的具有“額外值”的“問題”。 這就是浮點運算的方式。

你應該考慮使用十進制,或者可能加倍。 進一步閱讀: C#中的Decimal,Float和Double有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM