Вопрос № 46747: Здравствуйте! Вопрос по Экселю. Появилась необходимость проверить вводимые данные
на правильность. Например, вводятся продажи штучного товара по цене 1,20. Следует проверить, делится ли вводимое число на
1,20. При попытке сделать это либо через выдел...Вопрос № 46850: Здравствуйте,
уважаемые эксперты! Подскажите почему при вставке текста из ABBYY FineReader 8.0 Professional Edition в Word в Word'е вместо
букв появляются только квадратики? ...
Вопрос № 46.747
Здравствуйте! Вопрос по Экселю. Появилась необходимость проверить вводимые данные на правильность. Например, вводятся продажи
штучного товара по цене 1,20. Следует проверить, делится ли вводимое число на 1,20. При попытке сделать это либо через выделение
неправильно введенной ячейки условным форматированием, либо через Данные - Проверка при помощи проверки условия ОСТАТ(ячейка;
1,20)=0 столкнулся с проблемой: функция ОСТАТ не всегда работает правильно. Например, ОСТАТ(3,60;1,20) дает в результате
цифры через 15 нулей после запятой, хотя явно должна давать ноль! Проблему обошел, поэтому вариантов решений задачи предлагать
не нужно. Но почему так странно работает ОСТАТ ?
Отправлен: 19.06.2006, 23:40
Вопрос задал: pwg (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: AlexanderZh
Здравствуйте, pwg!
Скорее всего она работает с одиночной точностью (single). отсюда и погрешность. Почитайте про представление чисел с плавающей
точкой...
--------- Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет...
Ответ отправил: AlexanderZh (статус:
8-ой класс)
Ответ отправлен: 20.06.2006, 00:57
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, pwg!
Это проблема всех операций с вещественными ( не целыми ) числами. Операции умножения и деления в процессорах заменяются сложением
и вычитанием, причем число представленно немного в другом виде, чем вводится.
Проблема возникает практически во всех приложениях под Windows. Причем разница будет +-1Е-15, т.е. как в большую, так и в
меньшую сторону. В FoxPro для DOS считает нормально.
Решением этой проблемы является хранение данных в полях с целыми значениями, т.е. после ввода умножаете на 100, 10000 и т.п.
и записываете в базу. При выводе на экран пользователя делите на 100, 10000 соответственно, и проблем не будет. Тип данных
LONG в среде VB6 содержит четыре байта и позволяет записывать числа от -2,147,483,648 до 2,147,483,647. Соответственно в
копейках от -21млн до +21млн. Тип данных DECIMAL может хранить число с 28 нулями.
При операциях деления следует результат преобразовать в целое число ( при сохранении в поле может преобразоваться автоматически,
но не факт ). Можно добавить округление ( функция ROUND ).
Попробуйте проверить с числами 360 и 120, результат будет 0.
В VB.NET тип LONG хранится в 8 байтах и может содержать числа с 19 цифрами, тип DECIMAL хранится в 16 байтах и соответственно
большее число.
С уважением.
Ответ отправил: Филатов Евгений Геннадьевич
(статус: 3-ий класс)
Ответ отправлен: 20.06.2006, 12:54 Оценка за ответ: 5 Комментарий
оценки: Все понятно, спасибо!
Вопрос
№ 46.850
Здравствуйте, уважаемые эксперты! Подскажите почему при вставке текста из ABBYY FineReader 8.0 Professional Edition в Word
в Word'е вместо букв появляются только квадратики?
Отправлен: 20.06.2006, 20:17
Вопрос задал: Slayer1981 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: AlexanderZh
Здравствуйте, Slayer1981!
Если вопрос только "почему" то объясню: есть два типа шрифтов TrueType и OpenType. В TrueType шрифте находится
только одна кодовая страница (или несколько, но взаголовке шрифта нет об этом инфо) и некоторые программы используют эти
шрифты и указывают кодовую страницу не содержащююся в этом шрифте (шрифт может быть и русским, но в заголовке шрифта отсутствует
инфо о кодовой странице). Word же ориентирован на шрифты OpenType (содержащие несколько кодовых страниц для разных языков).
Встретив шрифт TrueType он пытается подставить символы из той таблицы, которая указана в документе, и если в шрифте данная
страница отсутсвует, то все символы заменяются на символ по умолчанию (как правило квадрат, реже знак вопроса).
Полечить это можно изменением шрифта этих квадратиков на другой в ворде (самый полный набор таблиц содержит Arial Unicode
MS) или прописыванием в ветке реестра FontSubtitutes этого шрифта. Пример в приложении...
Приложение:
--------- Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет...
Ответ отправил: AlexanderZh (статус:
8-ой класс)
Ответ отправлен: 20.06.2006, 21:38 Оценка за ответ: 5
Отвечает: METALLDOCTOR
Здравствуйте, Slayer1981!
Это трабл шрифтов. Например, вы пытаетесь отобразить русский текст шрифтом, в котором русского в принципе нету... Правда
у меня, в 2003-м офисе в таких случаех Ворд сам заменяет шрифт на TimesNewRoman.
--------- Ни о чём не жалею!
Ответ отправил: METALLDOCTOR (статус:
3-ий класс)
Ответ отправлен: 20.06.2006, 23:09 Оценка за ответ: 3 Комментарий оценки: Раньше
с этими же прогами проблем не было. P.S. Metall FOREVER!!!
Отвечает: Ирина Анатольевна
Здравствуйте, Slayer1981!
Загляните в настройки.
Возможно, у Вас не загружен
необходимый язык транслитерации.
Если с языком всё в порядке,
то причиной появления
квадратиков может быть
разниц
72; в используемых Reader-ом и
Offic-ом типов шрифтов (TrueType и
OpenType соответственно).
Всего Вам доброго.
--------- Пусть солнце улыбается в Ваших глазах!
Ответ отправила: Ирина Анатольевна
(статус: 4-ый класс)
Ответ отправлен: 21.06.2006, 07:07 Оценка за ответ: 4 Комментарий
оценки: Спасибо, но нет конкретной информации как заставить Office и Reader использовать одинаковые типы шрифтов.