Вверх ↑
Ответов: 990
Рейтинг: 207
#1: 2025-11-10 13:20:49 ЛС | профиль | цитата
sansey73 писал(а):
Что правильно, а саму половину куда? В этом-то и вопрос!
Вот и на весёлом примере Gunta, видно, что округление у парсера проводится с ошибкой.

Я думаю, что никакой ошибки нет. Это так называемое бухгалтерское округление и почти весь мир округляет именно так. Нас в школе учили математическому округлению, когда 5 округляется в большую сторону.
Вот пример двух видов округления

Add(MainForm,7403548,126,77)
{
link(onCreate,605549:doFor,[])
}
Add(For,605549,182,91)
{
Start=90
End=99
link(onEvent,4675259:doOperation,[])
link(onStop,15086441:doData,[(242,104)(242,146)])
}
Add(Math,12345668,301,91)
{
Op2=0.005
link(onResult,277124:doString,[])
}
Add(FormatStr,277124,350,91)
{
Mask="'%1;' + [Math]::Round(%1, 2) + ';' + [Math]::Round(%1, 2, 1) "
link(onFString,1602621:doAdd,[])
}
Add(Math,4675259,252,91)
{
OpType=3
Op2=100
link(onResult,12345668:doOperation,[])
}
Add(StrList,1602621,406,91)
{
}
Add(DoData,15086441,406,140)
{
link(onEventData,3519105:doConsoleExec,[])
link(Data,1602621:Text,[])
}
Add(WinExec,3519105,455,126)
{
FileName="powershell"
Mode=0
Point(onConsoleResult)
Point(onConsoleError)
Point(doConsoleExec)
link(onConsoleResult,2630416:doWork2,[])
link(onConsoleError,2630416:doWork3,[(501,153)])
}
Add(HubEx,2630416,497,140)
{
link(onEvent,10822758:doCharset,[])
}
Add(Charset,10822758,532,140)
{
link(onCharset,3493911:doConvert,[])
}
Add(MTStrTbl,4713517,651,84)
{
Width=506
Height=244
Align=5
Font=[MS Sans Serif,12,0,0,1]
Name="tabl"
Columns=#5:Число|13:Бухгалтерское|14:Математическое|
ColorItems=0
Redaction=0
Grid=0
}
Add(MST_Load,5405697,651,133)
{
ColNameHeader=1
MSTControl="tabl"
}
Add(StreamConvertor,3493911,588,140)
{
Mode=7
link(onResult,5405697:doLoadFromStream,[])
}

карма: 20

0