Страница 1 из 1
точность в 0.01 при делении =( фантастика
Добавлено: 18 фев 2013, 12:48
eniluck
Ребята вопрос очень простой в консоли Mapbasic в Mapinfo пишу:
Код: Выделить всё
print 4212.7/100*0.5*130
print 4212.7*0.5*130/100
получаю:
Вопрос. Почему это происходит
p.s. Результат: 2738,255
p.p.s И как получить эти самые 2738,255
Re: точность в 0.01 при делении =( фантастика
Добавлено: 18 фев 2013, 14:35
thegeo
print format$(4212.7*0.5*130/100,"#0.0000")
Re: точность в 0.01 при делении =( фантастика
Добавлено: 18 фев 2013, 14:51
eniluck
спасибо сам только что дотункал.
DeformatNumber$(format$(4212.7/100*0.5*130,"#0.###"))
для того чтобы можно было использовать дальше это значение.
И вот это округление

ох... от какой фазы луны оно зависит (
Re: точность в 0.01 при делении =( фантастика
Добавлено: 18 фев 2013, 14:57
eniluck
TheGeo, тем не менее спасибо за ответ!
на счёт округления.. Такую функцию придумал

вроде всегда выдает один и тот же результат.
окргуляет до 0.01.
Function My_Round(ByVal x As Float) As Float
Dim y As Float
y=x*100-int(x*100)
y=Abs(y)
Print y
if (y>=0.5) then
My_Round=int(x*100)/100+0.01
else
My_Round=int(x*100)/100
End if
End Function
Re: точность в 0.01 при делении =( фантастика
Добавлено: 27 фев 2013, 05:38
Sibit
Как то сложно у вас все. print не работает как вы хотите потому, что он работает со строкой, соответственно
print 5.12345 надо читать как print Str$(5.12345) , а Str$() по умолчанию округляет до 2-ого знака.
Ну и с функцией, Round() вроде как надо работает.