точность в 0.01 при делении =( фантастика

MapInfo, MapBasic
Ответить
eniluck
Новоприбывший
Сообщения: 3
Зарегистрирован: 18 фев 2013, 12:44
Репутация: 0

точность в 0.01 при делении =( фантастика

Сообщение eniluck » 18 фев 2013, 12:48

Ребята вопрос очень простой в консоли Mapbasic в Mapinfo пишу:

Код: Выделить всё

print 4212.7/100*0.5*130
print 4212.7*0.5*130/100
получаю:

Код: Выделить всё

2738.25
2738.26
Вопрос. Почему это происходит :(

p.s. Результат: 2738,255
p.p.s И как получить эти самые 2738,255

thegeo
Активный участник
Сообщения: 161
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: точность в 0.01 при делении =( фантастика

Сообщение thegeo » 18 фев 2013, 14:35

print format$(4212.7*0.5*130/100,"#0.0000")

eniluck
Новоприбывший
Сообщения: 3
Зарегистрирован: 18 фев 2013, 12:44
Репутация: 0

Re: точность в 0.01 при делении =( фантастика

Сообщение eniluck » 18 фев 2013, 14:51

спасибо сам только что дотункал.
DeformatNumber$(format$(4212.7/100*0.5*130,"#0.###"))
для того чтобы можно было использовать дальше это значение.
И вот это округление :( ох... от какой фазы луны оно зависит (

eniluck
Новоприбывший
Сообщения: 3
Зарегистрирован: 18 фев 2013, 12:44
Репутация: 0

Re: точность в 0.01 при делении =( фантастика

Сообщение eniluck » 18 фев 2013, 14:57

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

Sibit
Активный участник
Сообщения: 216
Зарегистрирован: 21 окт 2009, 13:29
Репутация: 28
Откуда: Новосибирск

Re: точность в 0.01 при делении =( фантастика

Сообщение Sibit » 27 фев 2013, 05:38

Как то сложно у вас все. print не работает как вы хотите потому, что он работает со строкой, соответственно
print 5.12345 надо читать как print Str$(5.12345) , а Str$() по умолчанию округляет до 2-ого знака.
Ну и с функцией, Round() вроде как надо работает.

Ответить

Вернуться в «MapInfo»

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя