2017-09-11 3 views
4

저는 루아를 처음 사용하고 있으며, 시뮬레이션 프로그램 인 femm에서 몇 가지 작업을 자동화하는데 사용하고 있습니다. 문제가 0.1 ~ 0.2, 만 반복은 (는 I = 0.3를 입력 ​​없음) .I 0.1 내지 0.4 (예를 들어, 다른 값으로 시도루아 for 루프가 모든 반복 작업을 수행하지 않습니다

for i=0.1,0.3,0.1 
do 
    print(i) 
end 

하다 내 스크립트 나 루프의 형태를 가질) 제대로 작동합니다. 이 이상한 행동이 일어나는 이유는 무엇입니까? 부동 소수점 문제입니까?

+0

0.3이 정수로 선언되지 않은이 때문에 0.3 – moteus

+0

인가에 동일하지 수 있습니다을 내가하지 않은 루아를 사용하기 전에)? 루프 변수에 정수 값만 사용해야합니까? – user19955

+0

'i = 0.1, 0.3 + 1e-9, 0.1' –

답변

3

이것은 0.1에서 0.1을 세 번 더하면 0.3보다 약간 큰 숫자가 생성되기 때문에 발생합니다. 따라서 루프는 타겟 엔드 번호에 도달하기 전에 중지됩니다.

루프 반복에 부동 소수점 값을 사용하는 위험이 있습니다. 당신의 필요한 수의 얻을 수있는 부문을 대신 정수에서 루프를 다시 작성하고, 수행 (

for j = 1,3 
do 
    i = j/10 
    print(i) 
end 

Demo.

관련 문제