Я, кажется, теряю десятичное разрешение, когда выполняю расчет ниже. Кажется, что независимо от того, какое число я рассчитываю, я всегда заканчиваю с некоторой четвертью (например, x.00, x.25, x.50, 0r x.75) в десятичной системе. Спасибо за помощь. Я знаю, что mph.ToString («n2») сократит его до двух десятичных знаков, но почему в кварталы?C# Потеря десятичного разрешения при выполнении вычисления
int totalRotations = 0;
int lastRotations = 0;
int diffRotations = 0;
int hourRotations = 0;
double mph = 0;
double distance = 0;
private void calcMPH()
{
UInt16 val = CounterInputReader.ReadScanUInt16();
totalRotations = val;
diffRotations = totalRotations - lastRotations;
hourRotations = diffRotations * 3600;
distance = hourRotations * 1.8333333; //wheel constant, (feet/pulse). Changes per diameter of wheel.
mph = distance/5280;
StatusBox1.Text = StatusBox1.Text + System.Environment.NewLine + "Load Array Rotor Speed: " + mphWind + " : " + scan.Length;
sensorScans.Add(Settings1.Default.Ch1c, mph);
//Why are we losing the decimal point resolution and only limited to quarters (0.00, 0.25, 0.50, 0.75)?
lblSpeedValue.Text = mph.ToString("n2") + " mph";
lastRotations = totalRotations; //Save last Rotations per Pulse for mph calculations.
}
'расстояние/5280' деление на целое число? '5280.0' – Sayse
попробуйте использовать' decimal' вместо double. добавьте суффикс 'M' к числу, чтобы сделать его« десятичным ». ex: 'diffRotations * 3600m;' – DLeh
'double' лучше, чем' decimal' для такого расчета. – DrKoch