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)