Single и Double

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Single и Double

Сообщение timsoft » 19.09.2006 (Вт) 13:33

Как получаются ошибки в бухгалтерии...

Задача: поступило 66,790 тонн продукции по цене 2556 руб за тонну.
Сколько мы должны заплатить?

Код: Выделить всё
Private Sub Form_Load()
  Dim a As Single, b As Single
  a = 66.79
  b = 2556
  Debug.Print a * b
End Sub


ответ: 170715,30 руб

а поточнее???

Код: Выделить всё
Private Sub Form_Load()
  Dim a As Double, b As Double
  a = 66.79
  b = 2556
  Debug.Print a * b
End Sub


ответ: 170715,24 руб

разница 6 копеек!!!

вот вам и Single

p.s. переделываю базы и перекомпилирую софт. я в шоке...
tim@ Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 19.09.2006 (Вт) 13:45

Двойная точность несомненно рулит, однако для финансовых расчетов рекомендуется применять тип Currency. 6 копеек не пропадут!
Весь мир матрица, а мы в нем потоки байтов!

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 19.09.2006 (Вт) 13:47

Зачем сразу в шок?
Dbl точнее вот и используй его...

зы И вообще в кг храни по системе СИ ;о))
Пора уже всем хорошим людям собраться и убить всех плохих людей.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.09.2006 (Вт) 13:53

Используй Currency или Long.
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 19.09.2006 (Вт) 13:54

GB826
Зачем сразу в шок?
Dbl точнее вот и используй его...


угу, уже поменял... при этом размер базы вырос в полтора раза (в базе тоже поля поменял с одинарной на двойную)...
tim@ Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.09.2006 (Вт) 14:09

GB826 писал(а):Dbl точнее вот и используй его...

Плохой совет.
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 19.09.2006 (Вт) 14:20

alibek
ох, запарюсь я менять Double на Currency по всему коду (количество то насколько я понял, должно быть в double, так что Найти-Заменить не прокатит)...

может в софте оставить double а в базе сменить на currency?
tim@ Изображение

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 19.09.2006 (Вт) 14:47

alibek
Обоснуй....

И если насчет Курренси согласен, то про лонг не понял...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.09.2006 (Вт) 14:48

Для финансовых операций правильно использовать числа с фиксированной запятой. Использовать числа с плавающей запятой -- плохой совет.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 95

    TopList