NUMIN выдает неправильный результат, как получить правильный ответ?
Я создаю программу для подсчета количества цифр в числе
Когда я помещаю значение в 5 цифр, он дает правильный ответ, но когда я помещаю значение в 6 цифр, он дает неправильное значение.
Чтобы увидеть, что происходит в коде, я отладил код и обнаружил, что когда я помещаю 5-значное число, оно правильно преобразуется из строки в int, но когда я помещаю 6-значное значение, оно преобразует значение неправильно и дает некоторое отрицательное значение.
Я использую
CALL NUMIN(AB,NUM,10,STAT);
AB — это строка ab[0:40]
ЧИСЛО — целое число
STAT представляет собой строку STAT[0:50]
1 ответ
В TAL целое число без знака находится в диапазоне от 0 до 65535 , а целое число со знаком — в диапазоне от -32768 до 32767 , поэтому невозможно ввести 6-значный ввод в строку и преобразовать его с помощью NUMIN GPC(вызов процедуры Guardian).
Вместо этого вы можете использовать целое двойное слово со знаком INT(32) .EXT, которое представляет собой 32-разрядное целое число в диапазоне от -2147483648 до 2147483647 , в котором вы можете легко использовать 6-значный или более 6-значный ввод. Чтобы преобразовать 6-символьную или более 6-символьную строку в целое число, используйте DNUMIN GPC.
DNUMIN ( ascii-num
,signed-result
,base
,status );