我在为我的 mschart 的 y 轴设置最大值和最小值时遇到问题。将最大值或最小值设置为一个值(例如 10.025)时,图表设置为最大值的值为 10.024999618530273。
mainChart.ChartAreas[selectedChartArea].AxisY.Maximum = GetRoundYAxisMax(newYMax, newYRange);
mainChart.ChartAreas[selectedChartArea].AxisY.Minimum = GetRoundYAxisMin(newYMin, newYRange);
GetRoundYAxisMax 方法只返回一个“round”值。代码如下。
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 轴上的最大值或最小值时,它会设置一个非常接近它的值,但未舍入。
任何想法为什么会发生这种情况?