找回密码
 立即注册

QQ登录

只需一步,快速开始

新雨月

注册会员

4

主题

16

帖子

82

积分

注册会员

积分
82
新雨月
注册会员   /  发表于:2021-5-27 14:54  /   查看:2899  /  回复:7
1金币
    使用'#,###.####'将数字进行千分位格式化,浮点数正常,但整数末尾带上了小数点。
    image.png933925476.png
    代码如下:   
  1.   window.onload = function () {
  2.             var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  3.             var sheet = spread.getActiveSheet();
  4.             sheet.setArray(0,0,[
  5.             [12345,'#,###.####',12345],
  6.             [123.45,'#,###.####',123.45],
  7.             ]);
  8.             spread.getActiveSheet().getRange(0,2,2,1).formatter(new GC.Spread.Formatter.GeneralFormatter('#,###.####'));
  9.         };
复制代码


    问:如何对数字进行千分位格式化,并保留原有数值精度?


image.png376929625.png

FormatIntWithPoint.zip

757 Bytes, 下载次数: 303

7 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-5-27 15:03:48
沙发
如仅需设置单元格格式可以参考下面的代码
spread.getActiveSheet().getRange(0,2,1,1).formatter("#,##0.00");

另外有关格式的更多信息可以参考学习指南
https://demo.grapecity.com.cn/sp ... ic-formatter/purejs

modelV14_DEFAULT - 副本.html

1.18 KB, 下载次数: 177

回复 使用道具 举报
新雨月
注册会员   /  发表于:2021-5-27 15:21:18
板凳
本帖最后由 新雨月 于 2021-5-27 15:23 编辑
Derrick.Jiao 发表于 2021-5-27 15:03
如仅需设置单元格格式可以参考下面的代码
spread.getActiveSheet().getRange(0,2,1,1).formatter("#,##0.0 ...

    你描述的格式化会将整数格式化为两位小数,并补0。实际需求为保留精度,而不是添加小数点,且不要求补0。
    实际需求如图:
    image.png778301391.png



image.png975618591.png

FormatIntWithPoint_v2.zip

844 Bytes, 下载次数: 260

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-5-27 15:33:54
地板
新雨月 发表于 2021-5-27 15:21
你描述的格式化会将整数格式化为两位小数,并补0。实际需求为保留精度,而不是添加小数点,且不要求 ...

您设置的这个单元格格式如果后面没有值,就只会显示到小数点前,下图是Excel的结果。
image.png536994933.png

如果您想实际结果和预期结果一致,请按照下面的代码设置格式,不同的显示需求就使用不同的格式。
spread.getActiveSheet().getCell(1,2).formatter('#,##0');
spread.getActiveSheet().getRange(2,2).formatter('#,###.00');


回复 使用道具 举报
新雨月
注册会员   /  发表于:2021-5-27 15:46:51
5#
Derrick.Jiao 发表于 2021-5-27 15:33
您设置的这个单元格格式如果后面没有值,就只会显示到小数点前,下图是Excel的结果。

    #,##0在对浮点数格式化时,会丢失精度。
    #,###.00在对整数格式化时,会添加小数点和0。

    该列的数据可能存在整数,也可能存在浮点数,这是我不可控的,不能说等用户输入数据后,我再进行针对某一单元格的数据是否为浮点数进行格式化。

    有没有一种统一的格式,同时完成千分位格式化和精度保留?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-5-27 16:35:47
6#
新雨月 发表于 2021-5-27 15:46
#,##0在对浮点数格式化时,会丢失精度。
    #,###.00在对整数格式化时,会添加小数点和0。

没有这种统一的格式,即使是Excel也无法通过设置统一的格式。
回复 使用道具 举报
新雨月
注册会员   /  发表于:2021-5-27 16:36:49
7#
Derrick.Jiao 发表于 2021-5-27 16:35
没有这种统一的格式,即使是Excel也无法通过设置统一的格式。

了解,那我这边全用自定义算了,谢谢。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-5-27 17:12:39
8#
新雨月 发表于 2021-5-27 16:36
了解,那我这边全用自定义算了,谢谢。

不用客气,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部