今日bug解決

2021-10-02 06:36:50 字數 1422 閱讀 6219

今天在檢查資料周表時發現幾個資料異常,是一長串的浮點型小數,例如13.199999999901523這樣,起初以為是在得到資料之前做的資料處理導致的,然而debug了一下,發現不是資料處理的問題。處理之後是13.2,之後並沒有任何其他處理,直接使用put方法put進json物件裡之後,json物件裡的資料就變異常了。

暫時沒弄清楚是為什麼會出現這樣的問題,可能是json解析問題,也可能是其他原因,這個原因以後再找吧。看了下同事是怎麼解決的,搜了一下,發現可以用bigdecimal來解決這個問題,我把之前的float型都改為bigdecimal型資料,這樣精度可以完全準確。

今天用了bigdecimal三個方法,一是setscale(int newscale, roundingmode roundingmode),可以設定保留小數字數和進製方式,比如:

setscale(1)  表示保留一位小數,預設用四捨五入方式

setscale(1,bigdecimal.round_down) 直接刪除多餘的小數字,如2.35會變成2.3

setscale(1,bigdecimal.round_up) 進製處理,2.35變成2.4

setscale(1,bigdecimal.round_half_up) 四捨五入,2.35變成2.4

setscale(1,bigdecimal.round_half_down) 四捨五入,2.35變成2.3,如果是5則向下舍

最常用的就是setscale(1,bigdecimal.round_half_up),四捨五入計算。

第二個是add(bigdecimal)方法求加法;

第三個是divide(bigdecimal)方法做除法;

得到教訓:以後處理資料盡量不要用float這種不精確的,用bigdecimal處理精確計算。

之前使用date_format( subdate(curdate(),date_format(curdate(),'%w')-1), '%y-%m-%d 00:00:00'),將這一周的時間都整理成這週開始第一天的00:00:00,但是今天在檢查資料的時候發現不對,本週日的資料被劃分到下一周,上週日的資料被分到這一周,又是仔細的搜尋了一下同事大哥的**hhhhh,發現令人意外的操作,那就是date_format(date,'%u'),上網搜了一下,%u 格式設定星期一是一周的第一天。

在網上還搜到有一種方式,不過沒有試驗過,是這樣的:date_format( date_sub(curdate(), interval weekday(curdate()) day), '%y-%m-%d 00:00:00'),下次試試。

附上mysql日期處理總結:

今日BUG系列

今天寫輪播圖的時候 忘了在相框div 中新增定位而導致清除浮動的時候清除成了上一級 結構是這樣的 inner為相框div 我在寫的時候給box加了相對定位 忘記給inner新增 那麼 ul 的絕對定位就會找到 inner 相框div 我再在 inner裡清除浮動 肯定就清除不掉其他的圖 其他的圖都是...

Rails fckeditor的bug解決方案

在rails中使用fckeditor外掛程式,發現乙個問題,比如文章開頭都會留2個空格,中間有時也會有空格,但是儲存後,資料庫中是有空格的,但是在此用fckeditor顯示出來的話,空格就不見了,就是說fckeditor現實有問題。在網上沒有這方面的資料,所以我估計就是rails和fckeditor...

各種解決bug雜記

u盤的磁碟系統可能是fat32的,無法存入大於4g的檔案,需要改變磁碟系統。mac的操作為 進入磁碟管理 用spot utility搜尋即可 選中目標u盤格式化 選擇格式化後的磁碟系統為exfat。該磁碟系統能在pc和mac之間使用,而且對單個檔案的大小限制為16eb 報錯顯示 nltk data ...