2014-07-10 1 views
0

> double (time)> 1이> 0이고 < 인 다른 double (samplePeriod)로 나눌 수 있는지 확인하려고합니다. 다음 코드가 작동합니다 samplePeriods> 1은 아니지만 <은 1. 어떤 아이디어입니까? 감사.double> 1이 double로 나눌 수 있는지 확인하십시오. <

/// <summary> 
    /// Check if a sample is within 1/10 of a samplePeriod from being on a samplePeriod 
    /// </summary> 
    /// <param name="time"> The time of the sample </param> 
    /// <param name="samplePeriod"> The period between samples </param> 
    /// <returns> True if the sample is on a sample period, false if not </returns> 
    public static bool SampleIsOnSamplePeriod(double time, double samplePeriod) 
    { 
     if (Math.Abs(time%samplePeriod - 0d) > (samplePeriod/10)) 
     { 
      return false; 
     } 
     return true; 
    } 
+2

분명히 말하자면, 'a'와 'b'의 두 배로 나눈 결과가 전체 수 _라는 것을 알고 싶습니까? –

+1

"나누기"를 어떻게 정의합니까? Doubles는 C#에서 부동 소수점이므로 "완벽하게 나눌 수 있습니다"는 매우 드뭅니다. –

+0

아닙니다. 샘플 기간은 0과 1 사이의 숫자 일 수 있습니다. 응용 프로그램은 데이터 수집으로, 주어진 주파수에서 데이터를 수집합니다. 우리는 10 Hz라고 말합니다. 10 Hz의 샘플 간격은 0.1 초 (1/freq)입니다. 그래서, 나는 현재 시간 "time"이 0.1 초 단위로 증가하는지보고 싶다. 허용 오차는 샘플주기의 1/10이므로 시간은 +/- 0.01 이내 일 수 있습니다. +/- 0.01 이외의 값은 false입니다. – user2419860

답변

0
public static bool SampleIsOnSamplePeriod(double time, double samplePeriod) 
{ 
    double mod1 = (time/samplePeriod) % 1; 
    return (mod1 < .1) || (mod1 > .9); 
} 

당신이 samplePeriod에 의해 time을 분할하고 그것을 인 경우, 1에 의해 모드를하고"닫기 이 값은 0과 0.1 사이 또는 0.9와 1 사이 여야합니다.

수표의 왼쪽은 [0, 0.1]입니다. 오른쪽은 [0.9, 1]입니다.

+0

완벽한, 고마워. – user2419860

+0

@ user2419860 여러분을 환영합니다! – Jashaszun

+0

'modple'은 이미 'sameplePeriod'로 나누어 계산했기 때문에이 대답은 작동하지 않습니다. 그것은 'samplePeriod/10'과 '1 - (samplePeriod/10)'이 아니라 '0.1'과 '0.9'와 비교되어야합니다. –

1

당신의 코멘트를 읽은 후 "허용 오차는 샘플 기간의 1/10, 그래서 시간은이 사실 간주 +/- 0.01 이내가 될 수 있습니다. . +/- 0.01 이외의 값이 거짓이 될 것입니다 ", 난 정말 당신이 원하는 생각 :

if ((time%samplePeriod > samplePeriod*0.9d) || (time%samplePeriod < samplePeriod*0.1d) 
기본적으로
0
public static bool SampleIsOnSamplePeriod(double time, double samplePeriod) 
{ 
    var d = time/samplePediod; 
    return Math.Abs(d - Math.Round(d)) <= 0.1; 
} 
관련 문제