C# 如果Y值很大,C图表就会崩溃
我从文件中读取一组值,然后在图表中显示数据。但如果Y值真的很大,我的图表就会崩溃。图表对象中是否存在错误 用于说明问题的示例代码:C# 如果Y值很大,C图表就会崩溃,c#,C#,我从文件中读取一组值,然后在图表中显示数据。但如果Y值真的很大,我的图表就会崩溃。图表对象中是否存在错误 用于说明问题的示例代码: using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
chart1.Series[0].ChartType = SeriesChartType.Line;
chart1.Series[0].Points.AddY(0);
chart1.Series[0].Points.AddY(1);
chart1.Series[0].Points.AddY(3);
chart1.Series[0].Points.AddY(1);
chart1.Series[0].Points.AddY(9);
chart1.Series[0].Points.AddY(5);
chart1.Series[0].Points.AddY(3.15486e+29); // This big value makes the chart crash
}
}
}
这是一个已知的错误吗?AddY属性不是一个Int吗,并且您传入的值超过了这个值?您还没有显示错误,但我怀疑您得到的结果是:“值对于Int32来说太大或太小” 无法用任何图表绘制无穷大,因此,试图绘制3.15486e+29这样的大值,您的图表应用程序正在崩溃。处理此类问题有两种方法:
所以问题是图表内部使用十进制。因此,当我添加一个Y值3.15486e+29时,它不适合十进制类型的范围 问题解决了(至少是图表出错的原因)
:-)由于大数值是无意义的,无法显示,只需在添加到图表之前替换为合理的大数值。尝试使用对数Y轴刻度。我会说,这是设计上的,不适用于标准折线图。但3.15486e+28可以工作,而不是3.15486e+29,这太疯狂了:-/在我的VS2017中,错误是“数值太大或太小,不适合十进制”。对数y轴也没有帮助。但是,正如Lei所写,该值在图形图表中没有什么意义。不,不。它是双精度的,错误是“值对于decimal来说太大或太小”[link]()这不是正确的名称空间吗?您将参数与返回类型混淆了。对于decimal也是如此。。所有值(包括例如数据时间)都在内部转换为双精度。