Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Нужна подсказка


Автор: Wild 28.6.2002, 05:57
Как побороть округление при работе с дробными числами. Почему a/b, где а=1, b=0.0001 не равно 1000, а равно 0.999999991326387?!?!?!??

Автор: Vit 28.6.2002, 14:25
Что-то ты совсем не так делаешь:
1/0.0001=10000 и совсем не 1000 и даже не 0.999999991326387
И компьютер вычисляет это совершенно правильно, без всяких дробей...

Автор: nezabor 3.5.2008, 23:19
Люди а посмотрите вот эту прогу у меня почему-то выходит 0

Код

Private Sub cmdCalculate_Click()
    Dim cPrincipal As Currency
    Dim fIntRate As Single, nTerm As Integer, cPayment As Currency
    ' Сохраним в переменной cPrincipal величину ссуды
    cPrincipal = Val(txtPrincipal.Text)
    ' Преобразуем величину процентной ставки в её
    ' десятичный эквивалент. Например, число
    ' 12,75 должно быть преобразовано в 0,1275
    fIntRate = Val(txtIntRate.Text) / 100
    ' Преобразуем годовую процентную ставку в месячную,
    ' разделив её на 12 (количество месяцев в году)
    fIntRate = fIntRate / 12
    ' Преобразуем срок погашения ссуды, заданный в годах,
    ' в месяцы, умножив его на 12 (количество месяцев в году)
    nTerm = Val(txtTerm.Text) * 12
    ' Вычислим величину месячного платежа и отобразим его
    ' на экране.
    ' С помощью функции Format() мы преобразуем вычесленное
    ' значение в текстовый вид и заодно улучшим читаемость
    ' цифр на экране.
    cPayment = cPayment * (fIntRate / (1 - (1 + fIntRate) ^ -nTerm))
    txtPayment.Text = Format(cPayment, "Fixed")
End Sub

Автор: Akina 4.5.2008, 07:44
Цитата(nezabor @  4.5.2008,  00:19 Найти цитируемый пост)
 меня почему-то выходит 0

Так и должно быть. cPayment определено в процедуре, следовательно, инициализируется нулем. Потом на что не умножай - нулем оно и останется.

Автор: nezabor 4.5.2008, 11:24
да всё спасобо огромное
теперь я всё понял, надо было сначала самому по внимательнее посмотреть

Автор: cardinal 4.5.2008, 14:50
nezabor, пошаговая отладка тебе в помощь! smile 

Автор: nezabor 4.5.2008, 23:12
А это где?

Автор: cardinal 5.5.2008, 00:54
http://visualprogs.medyal.ru/lesson/16.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)