You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zeppelin.apache.org by "David Tzoor (JIRA)" <ji...@apache.org> on 2016/09/13 12:30:20 UTC

[jira] [Created] (ZEPPELIN-1434) Long numbers rounding in Zeppelin-Web table

David Tzoor created ZEPPELIN-1434:
-------------------------------------

             Summary: Long numbers rounding in Zeppelin-Web table
                 Key: ZEPPELIN-1434
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-1434
             Project: Zeppelin
          Issue Type: Bug
            Reporter: David Tzoor
            Priority: Critical


zeppelin-web is using {{Handsontable}} package to generate the table view within the notebooks' paragraphs.
In the [paragraph controller|https://github.com/apache/zeppelin/blob/master/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js], within the Handsontable object instantiation, the {{cells}} function checks if the given value is a number (using {{!isNan(value)}} method). If the value is indeed a number, it will render as follows:
{code:javascript}
else if (!isNaN(value)) {
    cellProperties.format = '0,0.[00000]';
    td.style.textAlign = 'left';
    Handsontable.renderers.NumericRenderer.apply(this, arguments);
}
{code}
Since javascript supports numbers between {{-(2^53^ - 1)}} and {{(2^53^ - 1)}}, any number not within this range, will be rounded (up or down) and wrong numbers will be shown. I suggest to add another condition to check whether the number is a safe number:
{code:javascript}
Number.isSafeInteger(parseInt(value))
{code}
In that case, just render the value as a string (no formatting).

The second issue is with very small floats. The current rendering will only show up to 5 decimal places. There should be another condition to check if the value is a float, and if so use parseFloat or Number(value) to render it with the e notation: 
{code:javascript}
function isFloat(a) {
  return a.indexOf('.') !== -1;
}
...
if (isFloat(value)) {
    parseFloat(value);
}
{code}






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)