Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение/запись десятичных чисел в DBF-файл 
V
    Опции темы
Kisja
Дата 19.9.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.7.2007

Репутация: нет
Всего: нет



Такая задача.
Читаю данные из одного DBF-файла (назву его in.dbf). Из них нужно сформировать DBF-файл другой структуры (назву его out.dbf). Проблема состоит с записью десятичных чисел. Например в первом файле записана сумма 78.26, во второй файл записываеться 78,26 (с запятой, из-за этого дбф-редактор отображает число в виде 78.00). При чем на консоль выводиться число правильно (с десятичными значениями).

Читаю/записываю данные в dbf-файл с помощью библиотеки javadbf (http://sarovar.org/docman/view.php/32/23/j...f-tutorial.html).

Помогите пожалуйста, срочно нужно решить этот вопрос.

P.S. Это мой первый проект на Java.
PM MAIL   Вверх
tux
Дата 19.9.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Ну, если ты тип Double пишешь, то значит так библиотека работает. Лезь к ним в код и правь что нужно. Хотя возможно, что либа просто пишет не в том формате, который у тебя читалка читает, разновидностей DBF много.
PM MAIL Skype GTalk Jabber YIM   Вверх
techmax
Дата 19.9.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.9.2007
Где: Красноярск

Репутация: 2
Всего: 2



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

 DecimalFormat decimalformat = new DecimalFormat(####.##);
 String number = decimalformat.format(number);
 

а он по умолчанию использует разделитель  зависимый от Locale.
так что есть несколько выходов.
  • возможно в библиотеке есть настройка разделителя т.ч. ставишь точку и все впорядке
  •  Исправить код библиотеки установив 
     
    Код

     DecimalFormatSymbols dfSymbols = new DecimalFormatSymbols();
     dfSymbols.setDecimalSeparator('.');
      decimalformat.setDecimalFormatSymbols(dfSymbols);
  •  использовать OS с другой локалью
  •  а может где-то есть возможность установить разделитель по умолчанию





PM MAIL Skype   Вверх
Kisja
Дата 21.9.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.7.2007

Репутация: нет
Всего: нет



Спасибо всем за оперативные ответы.
Только проблема не решилась.
Возможно ли в настройках ОС изменить Locale?

С чтением из dbf все нормально.
Проблема именно с записью числа double в dbf.

Может у кого-то еще какие соображения?
PM MAIL   Вверх
dorogoyIV
Дата 22.9.2007, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



да поставь replace("," , "."); и не мучайся
PM MAIL   Вверх
techmax
Дата 24.9.2007, 05:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.9.2007
Где: Красноярск

Репутация: 2
Всего: 2



Скачай исходники там в классе Utils есть метод doubleFormating
После строки 
Код

DecimalFormat df = new DecimalFormat( format.toString());

Добавь
Код

     DecimalFormatSymbols dfSymbols = new DecimalFormatSymbols();
     dfSymbols.setDecimalSeparator('.');
     df.setDecimalFormatSymbols(dfSymbols);

Должно работать 
PM MAIL Skype   Вверх
Kisja
Дата 25.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.7.2007

Репутация: нет
Всего: нет



Цитата(dorogoyIV @ 22.9.2007,  03:47)
да поставь replace("," , "."); и не мучайся

интересно где заменять-то запятую на точку?
PM MAIL   Вверх
dorogoyIV
Дата 26.9.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Kisja @  19.9.2007,  12:21 Найти цитируемый пост)
. Например в первом файле записана сумма 78.26, во второй файл записываеться 78,26 (с запятой, из-за этого дбф-редактор отображает число в виде 78.00)

можно менять сразу при записи в этот файл, можно потом...
PM MAIL   Вверх
Kisja
Дата 2.10.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.7.2007

Репутация: нет
Всего: нет



Цитата(techmax @ 24.9.2007,  05:23)
Скачай исходники там в классе Utils есть метод doubleFormating
После строки 
Код

DecimalFormat df = new DecimalFormat( format.toString());

Добавь
Код

     DecimalFormatSymbols dfSymbols = new DecimalFormatSymbols();
     dfSymbols.setDecimalSeparator('.');
     df.setDecimalFormatSymbols(dfSymbols);

Должно работать

Спасибо, добрые люди.
Ваши советы очень помогли.
Я очень рада что у меня все получилось
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0829 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.