求助: 集算器的数值显示问题

大佬们,麻烦看一下这样的数值显示是否正常?

比如,在集算器 IDE 格子中输入一些数值,会发现一个问题,只要是千万级以上,再带上小数点的,不管小数点后是 00 或者是有意义的数,就会显示成科学计数,如下图中 A2:A4 所示。如果是小于千万级的小数和其它整数都会正常显示,我说的正常是所见即所得,如下图中的 A6:A9 所示。

imagepng

如果要想科学计数正常显示,必须要用 decimal 转换类型,float,number 均不能达到效果。

这种 "所见非所得" 的数值显示形式在实践中会带来两个问题:

1、读取文件时的显示问题。如果从文件读取这部分数据,xlsx 格式也好,csv 格式也好,也会显示成这种科学计数的效果,如下图所示。稍有不同的是从 excel 文件读取时,会把千万级整数正常显示,而从 csv 文件读取时会把千万级整数解析成带小数点 00 的数,从而显示成科学计数的形式。可以从下图中的 A4 带红框处观察结果:

imagepng

2、输出文件时,会变成科学计数的形式输出,如下图所示,右边的文件是由左边的输出转存得到的,txt 也是类似的效果:

imagepng

所以,In my humble opinion,这样的显示形式不是很方便,况且也只是个千万级的小数形式,这种量级的数值在实践中还是蛮普遍的。

为什么会纠结于值的显示形式?最近要把一些 csv 文件转码成 utf-8 编码导入数据库,因为数据库只接受 utf-8 编码的 csv 文件。市面上一些转码软件很不靠谱,总有识别不了的字符,导致过程中总有一些让人崩溃的事情出现。辗转求助于 SPL,使用打开 csv 再转存为 utf-8,虽然这种打开后再转存的方法不是很高明,但像 powershel 的 get-content 也是一行一行读,慢的很。还有 iconv 专门用于转码的命令也靠不住,很多识别不了的字符。SPL 很靠谱,在效率和转码问题上都很靠谱,关键时刻起到了 "救命" 的作用。唯一有个瑕疵就是数值的显示,总会变成科学计数的形式。导入后按一个表一个表去改,显然这种方法是不科学的,属于 choiceless choice,同样的,在源头一列一列去改,也是不科学,不知道数值列到底是哪些,起不到批量处理的作用。

再顺带另一个显示问题,在读取 excel 文件时,用 xlsimport@t 直接取取出来,数值显示正常:

imagepng

然后用,xlsimport@tc().fetch(),读成游标的形式再 fetch 出来时,显示就变了,好像 fetch 会 parse 解析:

imagepng

恳请大佬们得闲时看看上述千万级带小数数值显示的问题,给予指导帮助🙏 谢谢!