通过使用内部用于表示DateTime的时间刻度,您可以获得可能的最准确的值。由于这些时间间隔不会在午夜零时重新开始,因此您不会在白天时遇到问题。
// Sample times and full hour
DateTime lastSampleTimeBeforeFullHour = new DateTime(2011, 12, 19, 17, 58, 21);
DateTime firstSampleTimeAfterFullHour = new DateTime(2011, 12, 19, 18, 13, 21);
DateTime fullHour = new DateTime(2011, 12, 19, 18, 00, 00);
// Times as ticks (most accurate time unit)
long t0 = lastSampleTimeBeforeFullHour.Ticks;
long t1 = firstSampleTimeAfterFullHour.Ticks;
long tf = fullHour.Ticks;
// Energy samples
double e0 = 79179.88; // kWh before full hour
double e1 = 79182.13; // kWh after full hour
double ef; // interpolated energy at full hour
ef = e0 + (tf - t0) * (e1 - e0) / (t1 - t0); // ==> 79180.1275 kWh
在几何中,相似的三角形是形状相同但大小不同的三角形。上面的公式基于这样一个事实,即一个三角形中任意两个边的比率对于相似三角形的对应边都是相同的。
如果您有一个三角形ABC和一个相似的三角形abc,那么A : B = a : b
。两个比率的相等称为比率。
我们可以将此比例规则应用于我们的问题:
(e1 – e0) / (t1 – t0) = (ef – e0) / (tf – t0)
--- large triangle -- --- small triangle --