修复无法正确表示部分超大或超小数值的问题

This commit is contained in:
monitor1394
2021-05-01 20:21:31 +08:00
parent 4e4f501e68
commit a7f1723559
13 changed files with 57 additions and 48 deletions

View File

@@ -37,12 +37,12 @@ namespace XCharts
if (axis.interval > 0)
{
if (coordinateWid <= 0) return 0;
int num = Mathf.CeilToInt(axis.runtimeMinMaxRange / axis.interval);
int num = (int)(axis.runtimeMinMaxRange / axis.interval);
int maxNum = Mathf.CeilToInt(coordinateWid / 15);
if (num > maxNum)
{
axis.interval *= 2;
num = Mathf.CeilToInt(axis.runtimeMinMaxRange / axis.interval);
num = (int)(axis.runtimeMinMaxRange / axis.interval);
}
return num;
}
@@ -56,12 +56,12 @@ namespace XCharts
if (axis.interval > 0)
{
if (coordinateWid <= 0) return 0;
int num = Mathf.CeilToInt(axis.runtimeMinMaxRange / axis.interval);
int num = (int)(axis.runtimeMinMaxRange / axis.interval);
int maxNum = Mathf.CeilToInt(coordinateWid / 15);
if (num > maxNum)
{
axis.interval *= 2;
num = Mathf.CeilToInt(axis.runtimeMinMaxRange / axis.interval);
num = (int)(axis.runtimeMinMaxRange / axis.interval);
}
return num;
}
@@ -238,8 +238,14 @@ namespace XCharts
if (axis.type == Axis.AxisType.Value && axis.interval > 0)
{
if (axis.runtimeMinMaxRange <= 0) return 0;
if (index >= splitNum) return coordinateWidth - (index - 1) * axis.interval * coordinateWidth / axis.runtimeMinMaxRange;
else return axis.interval * coordinateWidth / axis.runtimeMinMaxRange;
if (index >= splitNum)
{
return (float)(coordinateWidth - (index - 1) * axis.interval * coordinateWidth / axis.runtimeMinMaxRange);
}
else
{
return (float)(axis.interval * coordinateWidth / axis.runtimeMinMaxRange);
}
}
else
{
@@ -343,7 +349,7 @@ namespace XCharts
break;
}
}
var tempRange = maxValue - minValue;
double tempRange = maxValue - minValue;
if (axis.runtimeMinMaxRange != tempRange)
{
axis.runtimeMinMaxRange = tempRange;

View File

@@ -432,8 +432,8 @@ namespace XCharts
public static void GetMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis,
bool inverse, bool yValue, out float minVaule, out float maxValue, bool isPolar = false)
{
float min = int.MaxValue;
float max = int.MinValue;
float min = float.MaxValue;
float max = float.MinValue;
var isPercentStack = SeriesHelper.IsPercentStack(series, SerieType.Bar);
if (!SeriesHelper.IsStack(series) || (isValueAxis && !yValue))
{
@@ -512,8 +512,8 @@ namespace XCharts
}
}
}
float tmax = int.MinValue;
float tmin = int.MaxValue;
float tmax = float.MinValue;
float tmin = float.MaxValue;
foreach (var tt in _serieTotalValueForMinMax)
{
if (tt.Value > tmax) tmax = tt.Value;
@@ -523,15 +523,15 @@ namespace XCharts
if (tmin < min) min = tmin;
}
}
if (max == int.MinValue && min == int.MaxValue)
if (max == float.MinValue && min == float.MaxValue)
{
minVaule = 0;
maxValue = 0;
}
else
{
minVaule = min > 1 ? Mathf.FloorToInt(min) : min;
maxValue = max > 1 ? Mathf.CeilToInt(max) : max;
minVaule = min > 1 ? Mathf.Floor(min) : min;
maxValue = max > 1 ? Mathf.Ceil(max) : max;
}
}