mschartのy軸の最大値と最小値の設定に問題があります。maxまたはminを値、たとえば10.025に設定する場合、チャートがmaxとして設定する値は10.024999618530273です。
mainChart.ChartAreas[selectedChartArea].AxisY.Maximum = GetRoundYAxisMax(newYMax, newYRange);
mainChart.ChartAreas[selectedChartArea].AxisY.Minimum = GetRoundYAxisMin(newYMin, newYRange);
GetRoundYAxisMaxメソッドは、「ラウンド」値を返すだけです。以下のコード。
private float GetRoundYAxisMax(double calculatedMax, double yAxisRange)
{
double rangeFactor = 0;
if (yAxisRange > 10)
rangeFactor = 1;
else if (yAxisRange > 1)
rangeFactor = 4;
else if (yAxisRange > 0.1)
rangeFactor = 40;
else if (yAxisRange > 0.01)
rangeFactor = 400;
else if (yAxisRange > 0.001)
rangeFactor = 4000;
else if (yAxisRange > 0.0001)
rangeFactor = 40000;
else
rangeFactor = 400000;
float returnValue = (float)(Math.Round(calculatedMax * rangeFactor, MidpointRounding.ToEven) / rangeFactor);
return returnValue;
}
丸めコードは適切に評価され、正しく丸められた値を返しますが、この値をy軸の最大値または最小値に設定すると、それに非常に近い値が設定されますが、丸められません。
なぜこれが起こっているのか考えはありますか?