iT邦幫忙

0

C# 透過 DataTable 取回來的數值其小數點後會自動補0

  • 分享至 

  • xImage

因為最近在翻寫舊的VB 程式改用 C#時,
比對程式跑出來的結果中發現在 C# 數值的部份其小數點後會自動補0,
但原來的VB 卻不會,因為實際上 SQL Query 只有取到特定的小數點2至3位,
https://ithelp.ithome.com.tw/upload/images/20230712/201613643IqotHUcFo.png
但使用的 C# 程式捉取資料回來後卻會在小數點後自動再多補一個0,
不知道各位是否有遇到或知道該如何解決自動補0的問題?
DataTable dt = new DataTable();
OracleDataAdapter da = new OracleDataAdapter(strSql, OpenCon);
da.Fill(dt);
https://ithelp.ithome.com.tw/upload/images/20230712/20161364aftHLiWkIL.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
public static decimal Normalize(this decimal value)
{
    return value/1.000000000000000000000000000000000m;
}

可以參考黑大的解法

謝謝您熱心的回覆,這篇我也有Google 到,看起來是山不轉路轉的作法,
我本來以為是 C# 某個Bug 造成的,看來也是很多人對浖點數很感冒的原因,但財務部的同仁就是對這些小點數斤斤計較,既使補0不影響其本值,
但他們看到結果不一樣心裡就不爽,所以只能硬著頭皮來解解看...

是啊,文中也有提到,float、double不會保存尾數0,也許你抓出來針對該欄位去用型別來接(or轉型),就可以解了

謝謝你的回答,我再請工程師們研究一下~~

我要發表回答

立即登入回答