這裏是背景信息的簡要位:比較數字時,這些數字串
雖然設計規則引擎所需輸入我碰到有問題絆了形式的各個方面進行比較,以檢查是否一個數比另一個號碼大,運營商>和<對嗎?錯誤的是,我必須比較這兩種類型的字符串,它們必須是字符串,而不是可以改變的東西。
所以希望看到引擎會在哪裏出現故障,所以我會知道從哪裏開始我告訴它比較「100」到「10,000」,你可以想象我的驚喜,當它正確地計算出10k更大時,然後我意識到DUH它只是比較字符串長度,所以我比較1001到1000,再次得到它正確,1001更大。
但是我堅持認爲這不應該起作用,所以我一直堅持用各種各樣的場景敲擊引擎,以確保它看起來失敗。在一位同事指出系統能夠比較1001和1000作爲文件名並正確排序後,最新的想法是它比較了某種類型的aschii字符值,測試繼續進行。這個WOULD失敗了,我不能接受它能夠正確地計算出哪兩個是字符串時哪個數字更大。
所以我的下一個想法是,它排列每個字符串的第一個字符,並通過字符串的每個部分比較值。當我測試11,111到9,999時,我終於成功了,它認爲9,999更大。完美的是,我已經足夠高興了,它比較了1比9和9勝,每次都簡單修正,在較短的字符串前添加0。
通過引擎運行這個新理論,並再次愉快地計算哪個更大。
但是,我仍然不相信,這種比較肯定還有其他的缺陷,但我缺少比較來測試證明我的理論。所以,我對你過花的問題是你認爲這可能會失敗的情景?
你以前試過這個嗎?比較字符串時的數字和你遇到的陷阱是什麼?我有沒有覆蓋他們或我忽略了一些重大陷阱?
我不相信這種方法是傻瓜證明(不過請注意,我沒有測試,如100D爲10000串,因爲沒有驗證,以確信這一點)
提前感謝!
注:我做了一些Google搜索和搜索,我不認爲它在這裏被任何問題覆蓋,是的一些是相似的,但他們擔心不想在字符串中的數字,不想要一串數字,所以我認爲這不同,足以發佈。
注2:我的具體問題是在哪裏將數字比較使用數字而不是整數
與「int」比較相比,它們會在哪裏失敗?那麼,如果它編程正確,他們不會。 – 2012-07-20 13:35:50
我認爲你已經過分理性化了這一點,當你應該解析爲int,double等並比較THAT。 – Polyfun 2012-07-20 13:39:32
再一次,意識到做到這一點的正確方法,我甚至以正確的方式做到了,我只是好奇使用字符串的程度,純粹的好奇心 – RhysW 2012-07-20 13:41:34