Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: MSSQL 200 Extended Stored Procedures  (Прочитано 5794 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MrX
Гость
« : 21-02-2006 14:04 » 

Привет !

Есть одна проблема ... Работаю в Builder'e C++ ... Передаю в процедуру значение типа money... в программе значение подучаю в структуру DBMONEY
typedef struct srv_money
{      // Format for SRVMONEY
    long mnyhigh;
    unsigned long mnylow;
} DBMONEY;

для значения 100000.00
mnyhigh=0
mnylow=1000000000
...
для значения 1000000.00
mnyhigh=2
mnylow=1410065408

как из 2 и 1410065408 в результате получить передаваемое значение (1000000.00) ?
Заранее благоларен ...
« Последнее редактирование: 15-12-2007 19:42 от Алексей1153++ » Записан
Alf
Гость
« Ответ #1 : 21-02-2006 20:35 » 

Очень просто.

Денежный формат хранится в виде 64-битного целого с точностью до 0.0001

Таким образом, единица 1.0 представляется как 10000 (в десятичном виде).

К твоему числу 1000000 дописываем дробную часть (еще 4 нуля), получаем: 10 000 000 000

Преобразовываем в HEX: 00000002 540BE400

Начинает проясняться? Остается лишь преобразовать 540BE400 обратно в десятичное представление, получим то, что и ожидали: 1410065408

Нужно умножить mnyhigh на 2^32 и прибавить mnylow, и будет щастье.
Записан
MrX
Гость
« Ответ #2 : 22-02-2006 13:19 » 

Спасибо ! Работает ! ....Щастье ....
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines