Отправляет email-рассылки с помощью сервиса Sendsay

[TC] скрипты jaws - обработка дробей

Здравствуйте, господа подписчики.

Столкнулся с неожиданной проблемой. С помощью GetWord () получаю слово под
курсором, далее конвертирую его StringToInt и присваиваю некой переменной
значение преобразования, а на выходе получаю... Если слово было 55123, то с
переменной всё в порядке, она становится равной 55123, но если до
конвертации слово под курсором было десятичной дробью, например 55.123, то
конвертируется в int только то, что стояло до точки. В итоге после
StringToInt получаем не 55.123, а просто 55.

Позволяет ли какая-нибудь функция обработать всю дробь целиком и присвоить
переменной значение этой дроби?

Ответить   Игорь Лялин Mon, 10 Aug 2009 05:07:23 +0400 (#893166)

 

Ответы:

Доброго времени суток, Игорь.

Из сообщения от 10.08.2009 4:08:

А как Вы хотите видеть результат подобной конвертации?
Ведь Вы приводите результат к целому числу.
Куда он должен деть дробную часть?

Не совсем понятно, что Вы хотите в результате получить и что в дальнейшем с
этим делать.
Поскольку в JFW нет типа данных для дробных чисел,
остается только держать подобные значения в строковом виде, т. е. в
переменной типа string.
Уточните, пожалуйста, что Вы имеете в виду под словом "обработать".

С уважением, Руслан Усачев

Ответить   Руслан Усачев Mon, 10 Aug 2009 09:56:01 +0300 (#893244)

 

Здравствуйте, Руслан.

Уточняю. С помощью GetWord получаю из слова под курсором 55.123, перевожу
его в тип int и присваиваю переменной var1. Далее снова GetWord для другого
слова 55.321, привожу и его к Int и присваиваю результат var2. В итоге var1
у нас 55.123, а var2 - 55.321. Потом Let var3 = var1+var2. Как результат,
var3 должна равняться 110,444.

Ответить   Игорь Лялин Mon, 10 Aug 2009 12:03:53 +0400 (#893270)

 

Доброго времени суток, Игорь.

Из сообщения от 10.08.2009 12:43:

Еще раз обращаю Ваше внимание на отсутствие в JFW
типа данных для представления чисел с десятичной точкой.
Преобразование к типу integer приведет к потере дробной части.
Поэтому хранить такие значения можно только в переменных типа string.

Для обеспечения требуемой Вами функциональности можно :
1. разбив слагаемые на целую и дробную части выполнить операцию сложения
отдельно для целых и дробных частей, преобразовав их предварительно в
integer,
а затем снова склеить результат в строку, применив необходимую логику для
переноса старшего разряда.
2. реализовать поразрядно арифметические операции со строками
3. воспользоваться COM объектами (либо , например, из MsOffice,
что будет вызывать значительную задержку при инициализации,
либо создав элементарный свой для сложения двух чисел,
например, с помощью технологии Microsoft Script Component или других
средств)

С уважением, Руслан Усачев

Ответить   Руслан Усачев Mon, 10 Aug 2009 13:51:20 +0300 (#893349)

 

В сообщении ": скрипты jaws - обработка дробей" от 12:03, Mon, 10 Aug.
let i = stringtoint ("55,122")
Вы думаете, что I = 55.122, увы, 55!
функция возвращает целочисленное значение. Выход прост:
- умножить до 55122;
- произвести нужные действия;
- поделить на 100;
Можно попробовать и по другому, но сие самое простое, что приходит на Ум.
Отдельно получать целую и дробную части можно по / и %

До Свидания.
С наилучшими пожеланиями, леонид Жилин, г. Красноярск.
skype: ls_jilin

Ответить   Leonid Jilin Mon, 10 Aug 2009 19:57:38 +0800 (#893370)