matlab 單雙精度引發的血案

2021-07-10 23:37:47 字數 439 閱讀 5448

今天在測試乙個演算法時遇到了少見的問題,覺得值得記錄,總結起來,可以用下面幾行**來表示:

看到了麼,這個數字在加減去1後都是不變的,然而,當bbb不是單精度時,答案就是正確的:

當然,在互動行中直接賦值的變數預設是double型別。這麼寫只是為了強調資料的格式。

matlab在用雙精度減(或加)單精度型別時,返回的結果竟然儲存格式是單精度的,而單精度的實際有效位數為24位,也就是能夠表示的範圍最大為:

2^24-1 = 16777215

而我的結果明顯已經超過了這個範圍,所以才會有這麼怪異的輸出。

修改單例屬性引發的血案

最近接觸的一些系統中遇到乙個問題,乙個交易的服務對外提供了支付和退款兩種能力,但是發現執行時交易的服務走了退款。原因是spring容器管理的乙個物件service 屬性執行時被改變,導致上下流程對不上的問題,多業務鏈路併發時引發執行時屬性錯亂,導致 支付和退款行為混淆 下面是大體 樣例。記錄下問題原...

Mysql 時間戳未設定精度引發的血案

使用mysql少不了日期型別 平時直接用預設的配置 沒想到出現了修改完一條記錄後記錄數少一的情況.簡單翻譯下 發生了一次update 影響1行 一次select 結果兩行,update之前為3行 第一次update時候想把updatetime設定為2019 09 29 14 05 10.749 由於...

signed unsigned 引發的血案

bug描述 問題產生於區域網傳輸一幅。服務端負責傳送,是由另乙個同事用c 寫的,我用c 寫接收客戶端。我們約定在傳輸一幅前,先傳固定4個位元組的size資訊,然後傳資料。結果發現有些總是末尾壞掉一截或是乾脆就傳不過來。bug原因 在我接收到size 4 後,我採用了size size 3 256 2...