Google图表中的双值无效

时间:2013-08-05 07:49:37

标签: javascript google-visualization

以下Google图表适用于我,因为值为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);
    }

createCustomHTMLContentYear1createCustomHTMLContentYear2是我的自定义函数。

但是,当值为double类型时,它不起作用。我使用parseInt(Value1),但在这种情况下,双值丢失。例如, 0.3333 会变为 0

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

提前致谢。

1 个答案:

答案 0 :(得分: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()]);

你只需要做其中一个,而不是两个。