寻找一种用12000 = 1.2e+4
Handsontable v0.33.0
)的方法
我在Numbro找到了格式化数字的文档,但它似乎是为了显示统计信息和货币(即。1230974
使用format: '0.0a'
给出1.2m
)
理想情况下,我希望按照d3-format处理此方式的方式格式化数字
var value = 1230974
var formattedValue = d3.format(".3")(value)
console.log(formattedValue) // expected value: "1.23e+6"
答案 0 :(得分:0)
这是我根据@andy的建议和阅读Handsontable Custom renderers
后提出的建议var sensibleNumericRenderer = (hotInstance, td, row, column,
prop, value, cellProperties) => {
Handsontable.renderers.BaseRenderer.apply(this, arguments);
let prec = 4
let str
var val = Handsontable.helper.stringify(value)
if(val === "") {
str = val
}
else {
val = +val //convert to Number
//convert numbers that are too large or too small
if(val !== 0 && (Math.abs(val) > 1e4 || Math.abs(val) < 1e-2)) {
//truncate to 4 significant figures then convert to scientific notation
str = Number.parseFloat(val.toPrecision(prec)).toExponential()
}
else {
// works nicely for small integers or larger decimal fractions
str = d3.format(`.${prec}`)(val)
}
}
td.innerHTML = str
return td
}
Handsontable.renderers.registerRenderer("sensibleNumeric", sensibleNumericRenderer)