.NET图表引发十进制溢出异常

时间:2018-09-17 01:37:48

标签: .net visual-c++ charts c++-cli

我看到轴的MaximumMinimum的类型为double

我需要支持64字节的数据类型,所以目前,我正在使用BigInteger。现在,我需要将其显示为图表并研究double中可以包含无符号64字节的最大值,因此我对此没有任何问题。

这是一个小提琴,表明它可以:https://dotnetfiddle.net/sHJUof

现在,当我尝试在图表中使用该值时:

this->chart1->ChartAreas[0]->AxisY->Maximum = (double)maxData;
this->chart1->ChartAreas[0]->AxisY->Minimum = (double)minData;

我不确定这是否是导致异常的原因,但是在图形初始化时,它在整个画布上显示了一个大红色X。

这是堆栈跟踪和异常,似乎在内部它试图使用Decimal数据类型来执行某些操作,我对此一无所知。

System.OverflowException: Value was either too large or too small for a Decimal.
    at System.Decimal.FCallAddSub(Decimal& d1, Decimal& d2, Byte bSign)
    at System.Decimal.op_Addition(Decimal d1, Decimal d2)
    at System.Windows.Forms.DataVisualization.Charting.Axis.FillLabels(Boolean removeFirstRow)
    at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultAxesValues()
    at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetData(Boolean initializeAxes, Boolean checkIndexedAligned)
    at System.Windows.Forms.DataVisualization.Charting.ChartArea.ReCalcInternal()
    at System.Windows.Forms.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly)
    at System.Windows.Forms.DataVisualization.Charting.Chart.OnPaint(PaintEventArgs e)
    at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
    at System.Windows.Forms.Control.WmPaint(Message& m)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

有什么想法可以解决这个问题吗?

更新

当我在其系列中添加一个项目时,抛出异常,如下所示:

this->chart1->Series[0]->Points->Add(gcnew DataPoint(dX_position, (double)dData));

0 个答案:

没有答案