4
我有監視CPU和GPU的溫度的外部應用程序...
爲什麼lua的字符串模式匹配這樣做?
我使用的Lua與alien extension抓住這些值(通過GetWindowText)和做一些圖案這些值匹配,有效地提取溫度數字出了字符串,默認顯示爲類似CPU 67.875 °C
...
但是也許我對LUA中的模式工作有錯誤的想法(因爲它們看起來不像正則表達式)?
我使用的模式是[%d]+[.%d+]*
,它應該匹配0到100.0之間的任何數字,對嗎?
奇怪的是,當數值達到大約56.5度時,我是getting incredibly strange output(見鏈接)。
這是怎麼發生的?
我怎樣才能提取0和100之間的格式爲XYY.ZZZ
,其中X
不是可選的,Y
是可選的,.
是可選的,除非Z
存在的正確的浮點值(作爲字符串)?
好吧,我想這只是各種各樣的數學競賽條件......但是,這仍然沒有解釋爲什麼它決定在半途中瘋狂,並繼續向無窮大發展。 – RectangleEquals
@RectangleEquals,請參閱[浮點指南 - 程序員應瞭解的浮點算法](http://floating-point-gui.de/)。 – lhf
@RectangleEquals:請注意,雖然你的模式與此無關(你可以打印'''並且看到相同的東西),你的模式也是錯誤的。您需要轉義'.',並且只在第二個子句中檢查其中的一個*:[%d] +%。?[%d] *'。否則,您可以像「10.45」一樣輕鬆地解析「10aaaaa4bdcedd5」。 –