я не советовал прибавлять 0.001
я предлагаю один из вариантов округления называющийся Округление до указанного кратного (https://alphapedia.ru/w/Rounding 3.1 Округление до указанного кратного)
я не советовал прибавлять 0.001
я предлагаю один из вариантов округления называющийся Округление до указанного кратного (https://alphapedia.ru/w/Rounding 3.1 Округление до указанного кратного)
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Судя по всему, результат деления имеет вид 24.999999, хотя и отображается в отладке как 25. Ну а блок преобразования к udint не округляет, а просто отбрасывает дробную часть.
Где-то на форуме выкладывали макрос округления к ближайшему целому, похоже нужно в таких случаях перед блоком преобразования использовать что-то подобное.
Округление с нужным количеством знаков:
Код:function fRound : real; var_input rIn : real; N : udint; end_var var tmp : udint; end_var tmp := 10; if N.0 then fRound := udint_to_real(tmp); else fRound := 1; end_if; N := SHR(N,1); while N > 0 do tmp := tmp * tmp; if N.0 then fRound := fRound * udint_to_real(tmp); end_if; N := SHR(N,1); end_while; rIn := rIn * fRound; fRound := (( rIn / abs(rIn) ) * udint_to_real(real_to_udint((abs(rIn) + 0.5)))) / fRound; end_function
Последний раз редактировалось 1exan; 10.08.2022 в 06:55.
Ага, забил на вход 0.71 и получил на выходе 0.8. Офигенно просто))). 1 CDS2_3.jpg
Var1:=real_to_udint(rin * 10)/10.0 ; куда проще написать
Последний раз редактировалось kondor3000; 10.08.2022 в 09:25.
Проверил - у меня все правильно:
изображение_2022-08-10_131413706.png
А что дает "Var1:=real_to_udint(rin * 10)/10.0 ?
Owen.JPG
Товарищи, как убрать замок? И что это? Не нашел в инструкциях. Не могу менять переменные в режиме симулятора.
Выйдите из симуляции и меняйте, сколько угодно. В симуляции можно изменить только входные переменные, 1 Замок.jpg
например нажав на I1 и замок не мешает)))
А так же ваша переменная gr1 должна быть подключена к работающему блоку (к выходу), а не просто висеть в воздухе или сделайте её энергонезависимой (хоть на время) или выведите на экран.
Последний раз редактировалось kondor3000; 12.08.2022 в 17:20.