|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
|
Некорректная работа программы при другом языке системы28.07.2020, 20:22. Показов 2107. Ответов 11
Метки нет (Все метки)
Здравствуйте. Написал программу на С++/CLI Win Form.
Первый скриншот работа программы на родном языке системы (английский) это корректный вывод. Второй скриншот после переключения на немецкий язык. Скажите, пожалуйста, по какой причине это происходит? И происходит ли это по той причине что язык в системе переключил или потому что он именно немецкий?
0
|
|
| 28.07.2020, 20:22 | |
|
Ответы с готовыми решениями:
11
Некорректная работа программы,при вводе отрицательного числа Некорректная работа программы при использовании динамического массива
|
|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
||||||
| 28.07.2020, 20:53 [ТС] | ||||||
|
Rius, можете, пожалуйста, подробнее объяснить. Я не понял ваш пост, особенно второе предложение.
У меня использована datagrid и я там через CellStyle задал округление "N3" как "выводить до трёх знаков после запятой". И я не понимаю причём здесь точка. Добавлено через 6 минут Rius, У меня double число присваивается к Value. И после этого я делаю визуальное округление числа вот такой строчкой
Добавлено через 5 минут Изменил язык системы на английский, проблема ушла, но появилась другая теперь программа не заполняет таблицу до конца. Это просто ужасно. Добавлено через 5 минут То есть на русский изменил. На английском всё нормально.
0
|
||||||
|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
|
| 28.07.2020, 21:14 [ТС] | |
|
Прямо во всех не получится т.к. там у каждого столбца свои рассчёты и они взаимосвязаны друг с другом я вам одну строку сделал. Никаких измнений нет. Написал в немецкой системе, скомпилировал, запустил. Потом перешёл на английскую и тоже самое.
Хотя нет, есть в немецком запята, в англ точка. И что мне делать с этим, Rius? Нужно чтобы программа работала корректно на системах обоих языков...
0
|
|
|
|
||
| 28.07.2020, 21:28 | ||
|
Видите, выглядит одинаково.
У вас же в первом посте различаются значительно: en: 0.002 (1.6e-3) de: 1.600,000 (1.6e+3) Это значит, что значения где-то вычисляются на основе данных, полученных без учёта локали. А локали такие:
Добавлено через 57 секунд
0
|
||
|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
|
| 28.07.2020, 21:49 [ТС] | |
|
Да там данные уже вычисленные. Изначально программа получает ввод пользователя или загруженные из файла числа и далее обсчитывает их.
Rius, а вы можете пример простейший привести именно на коде с++ с дробями где получены данные без учёта локализации. Я просто первый раз с локализацией столкнулся и крайне плохо понимаю ваш пост. Добавлено через 13 минут Rius, я понял. Вся проблема в функции format ot defaultcellstyle. Просто она форматирует по разному. Посоветуйте, пожалуйста, что-нибудь последний раз и я отстану от вас. Как сделать так чтобы и форматирование было красивое и от локали это не зависело?
0
|
|
|
|
||||||
| 28.07.2020, 21:50 | ||||||
Сообщение было отмечено lynx98 как решение
Решение
Под ваши значения так сходу не подберу данные.
Попробуйте пошагово пройти в VS:
В данных, читаемых только программой - надо использовать нейтральную культуру ( CultureInfo.InvariantCulture).А вот в читаемых человеком - думайте. Немец может неправильно прочитать число, написанное англичанином.
1
|
||||||
|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
|
| 28.07.2020, 21:55 [ТС] | |
|
Rius, спасибо большое вам за помощь. Извините что так долго доставал вас, я понял проблему. Перевод промежуточных реузльтатов в строку при рассчёте.
0
|
|
|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
|
| 28.07.2020, 22:04 [ТС] | |
|
Rius да я новичок ещё даже что такое форматирование толком не понимал до этого треда. Я понял ошибку, моя программа промежуточные результаты которые должен видеть пользователь переводила в строку, а потом обратно в double и так вычисляла. Но суть в том что допустим в как вы писали вначале в англе точка имеет код 1, а немецком код 1 имеет запятая и поэтому получается такое.
Вывод нужно отделять вычисления от данных которые видит пользователь. Я уже исправляю. Спасибо вам большое.
0
|
|
|
2 / 2 / 0
Регистрация: 06.02.2020
Сообщений: 46
|
|
| 29.07.2020, 06:24 [ТС] | |
|
Rius, ещё раз хочу вас поблагодарить. Дошли до меня наконец ваши слова полностью. Сейчас на википедии прочитал что в штатах и других англоязычных странах дробный разделитель точка, а в европе запятая. Моя программа получала ввод из save файла(чтобы не вбивать данные в таблицу каждый раз заново) и в англоязычной версии там точка была, а в немецкой он эту точку за делитель тысяч принял и такие огромные результаты получались.
Я в немецкой в вводных данных заменил точку на запятую и всё заработало. Остаётся только сделать так чтобы программа обрабатывала точку и запятую в соотвествии с текущей локалью.
0
|
|
| 29.07.2020, 06:24 | |
|
Помогаю со студенческими работами здесь
12
Некорректная работа программы при добавлении столбца в двумерный массив Некорректная работа программы при встраивании ComboBox в ячейку StringGrid
Автоматическая генерация кода программы на основе программы на другом языке программирования Решение системы уравнений методом простых итераций с параметром при написании программы на языке Visual Basic Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|