![]() |
在這個頁面顯示本主題全部的 9 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 請問這是怎麼一回事? (單精度) (http://www.chiefox.com.tw/bbs/showthread.php?threadid=7391)
請問這是怎麼一回事?
在福建飛狐發現這樣一個問題
http://bbs.fjfox.com/thread-38715-1-1.html
STRTONUM('20070419'); 顯示出來卻是:20070420
STRTONUM('20071107'); 顯示出來卻是:20071108
STRTONUM('20081121'); 顯示出來卻是:20081120
是個有趣的問題,這個問題似乎只在 '16779999' 以後會發生,試試看
x:='16779999';
xx:='16779998';
//y:=2007041.9;
drawtext(barpos=sysparam(2),c,x),align4;
//drawnumber(barpos=sysparam(2),c,y,1),align4,shift10;
strtonum(x);
strtonum(xx);
很不幸的是在我的奇狐也有同樣問題存在,請問這是怎麼回事?
這很正常的
因為公式中的數值採單精度格式儲存(7位有效位數)
所以函數 DATE, 用下列方法來表示
DATE 有效值範圍為 700101-1341231 (用來表示19700101-20341231)
這個我明白,例子中所述的並非日期(雖然料想原問者所想表現的可能是與日期有關),而是單純自文字 '16779999' 等轉化成數字,並不要求四捨五入,即使軟體自動四捨五入也應該是均勻分布才對,並且要有一個強迫不四捨五入的方法來控制,否則在應用到類似轉化的過程,會發生災難
此外,其變化並非依尋常的四捨五入規則來的,我想這是軟體的bug,請教總版主的看法
並非 Bug
16779999 已達8位數了
最未位在計算或轉換過程中即會有差距(精度問題)
就 DATE 函數來說
今日的 DATE 值為 1070328 代表 20070328
2007 - 1900 = 107
您將年份文字轉為 DATE 函數 的格式
即可於奇狐中計算相對應的日期
我在上面已經說過,這不是單純關係到日期計算問題,日期的計算不應該與一般數字混淆,一個軟體不應該在任何數字的處理都只限於7位數,而且也不適宜把所有數字都當成日期來看待,況且在同樣是8位數的裡頭,問題似乎不發生在16779999之前,這與8位的解釋有點出入,反正這個問題顯然沒有帶給使用者多少困擾,因為會用到這樣表示的公式寫法並不多見,只是心有存疑,就直話直說,並非存心找碴,謝謝總版主的教導
引用:
最初由 shuenyi 發表
我在上面已經說過,這不是單純關係到日期計算問題,日期的計算不應該與一般數字混淆,一個軟體不應該在任何數字的處理都只限於7位數,而且也不適宜把所有數字都當成日期來看待,況且在同樣是8位數的裡頭,問題似乎不發生在16779999之前,這與8位的解釋有點出入,反正這個問題顯然沒有帶給使用者多少困擾,因為會用到這樣表示的公式寫法並不多見,只是心有存疑,就直話直說,並非存心找碴,謝謝總版主的教導
請勿生氣!!實在佩服版主的博學多能,不這樣也不會多懂一點,絕無妖言惑眾之心,奇狐仍是我的最愛,謝謝指導,對不確之言向奇狐道歉
引用:
最初由 shuenyi 發表
請勿生氣!!實在佩服版主的博學多能,不這樣也不會多懂一點,絕無妖言惑眾之心,奇狐仍是我的最愛,謝謝指導,對不確之言向奇狐道歉
全部時間均為台灣時間, 現在時間為00:43 | 在這個頁面顯示本主題全部的 9 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.