Что нового

Сравнение чиловых данных , полученных из окна Input

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
298
Почему неверно работает сравнение чисел ,полученных из окна Input ( Edit , из файла ) .
Похоже это связано с форматом представления чисел
Пример :
Код:
#include <StaticConstants.au3>

$hGUI = GuiCreate('Test ReadInput',300, 200)

$hInput=GUICtrlCreateInput("25.5",100,10,85,'',$SS_CENTER)  
 

$hInput1=GUICtrlCreateInput("3.5",10,10,85,'',$SS_CENTER) 

$btSet1=GUICtrlCreateButton('--',10,40,30,20)
$btSet2=GUICtrlCreateButton('+',10,60,30,20)

$btShow=GUICtrlCreateButton('Show ',10,100,30,20)

GUISetState ()    

While 1
	$msg = GUIGetMsg()
	
	Switch $msg
		Case -3
			Exit
		Case $btSet1
			GUICtrlSetData ($hInput1,GUICtrlRead($hInput1)-1)
		Case $btSet2
			GUICtrlSetData ($hInput1,GUICtrlRead($hInput1)+1)	
		Case $btShow
			$p=GUICtrlRead($hInput)
			;$p=Round ($p,1)
			$p1=GUICtrlRead($hInput1)
			;$p1=Round ($p1,1)
			If $p1 < $p Then 
				MsgBox(0,'',$p1 & ' <  ' & $p,1)
			Else
				MsgBox(0,'',$p1 & ' > ' & $p,1)
			EndIf	
	EndSwitch
Wend


При сравнении получается : 3.5 > 25.5 ???
Тогда , как : 2.5 < 25.5 !!!

Правильный результат похоже получается если предварительно
округлить числа с помощью ф-ии : Round
Как корректно сравнивать числа в этих случаях ?
 

amel27

Продвинутый
Сообщения
146
Репутация
55
gregaz сказал(а):
Как корректно сравнивать числа в этих случаях ?
переводить тип данных "строка" в "число":
Код:
ConsoleWrite( ("3.5">"25.5") &@CRLF)
ConsoleWrite( (Number("3.5")>Number("25.5")) &@CRLF)
ConsoleWrite( (3.5 > 25.5) &@CRLF)
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
298
amel27 сказал(а):
переводить тип данных "строка" в "число":
Спасибо. Ведь понимал что дело в формате , но не нашел перевода в числовой формат.
Огромное спасибо. :IL_AutoIt_1:
 
Верх