ВНИМАНИЕ
Вот за что я не люблю писать мат.проги на B3D за его windows-оподобную страсть показать себя умнее программиста. Как же он обожает округлять чиселки самостоятельно - кодом не корми.
В общем после долгих препирательств пришлось заменить часть кода. Таким образом:
Function Get_approach2#(x#,eps%)
Local res#,vLEFT#,vRIGHT#
Local x_s#=Float(Mid(Str(x),1,Len(Str(Int(x)))+1+eps))
Local mzr%=Int(Mid(Str(x),Len(Str(Int(x)))+1+eps,1))
Local flag%=mzr Mod 2
vLEFT=x_s+flag*10^(-eps)
vRIGHT=x_s+flag*10^(-eps)
If Abs(x-vLEFT)<Abs(x-vRIGHT)
res=vLEFT
Else
res=vRIGHT
EndIf
Return res
End Function
Теперь деление и прочие пертурбации с дробной частью убраны, путём преобразования числа в строку.
Это уже 3ее место в программе где приходится так выпендриваться: то сумма 6 целых чисел принимает вид х.9999, то 0.001 не прибавляется.т.к. это повлечёт переваливание числа за 0.5 - что может повлиять на его дальнейшую обработку более существенно...