0

以下谷歌图表对我有用,因为值是integer

google.load("visualization", "1", { packages: ["corechart"] });
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var Value1 = '@Model.Value1';
        var Value2 = '@Model.Value2';

        var tdata = new google.visualization.DataTable();

        tdata.addColumn('string', 'Years');
        tdata.addColumn('number', 'Values');
        tdata.addColumn({ type: 'string', role: 'tooltip', 'p': { 'html': true } });

        tdata.addRow(['1', Value1, createCustomHTMLContentYear1()]);
        tdata.addRow(['2', Value2, createCustomHTMLContentYear2()]);

        var options = { title: 'Value diagram for year' };

        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
        chart.draw(tdata, options);
    }

createCustomHTMLContentYear1并且createCustomHTMLContentYear2是我的自定义函数。

但是,当值在double类型中时,它不起作用。我用过parseInt(Value1),但在那种情况下,双倍的价值会丢失。例如,0.3333转为0

如何更改我的代码以double在图表上显示值?

提前致谢。

4

1 回答 1

1

你为什么输入你的数字作为字符串?

var Value1 = '@Model.Value1';
var Value2 = '@Model.Value2';

应该

var Value1 = @Model.Value1;
var Value2 = @Model.Value2;

假设@Model指的是服务器端数据元素。那你就不用担心类型转换了。

如果由于某种原因必须将数字作为字符串输入,那么正确的类型转换函数是 parseFloat,而不是 parseInt:

tdata.addRow(['1', parseFloat(Value1), createCustomHTMLContentYear1()]);
tdata.addRow(['2', parseFloat(Value2), createCustomHTMLContentYear2()]);

您只需要执行其中一项,而不是两者都执行。

于 2013-08-05T14:27:38.567 回答