公式输出数据保留位数

D5是需要展示的数据,D6为应保留的位数。

D5中的公式为“IF(OR(ISNULL(D6), D6 = "", ISNULL(D5), D5 = ""), D5, ROUND(D5, D6))

展示的数据第一例保留为4位数,数据库实际存储为1.2000,展示时显示为1.2。

如何让D5的数据保留数根据D6来,且多余0不舍去

FineReport sk 发布于 2025-6-30 15:56
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
snrtuemcLv8专家互助
发布于2025-6-30 16:06

IF(OR(ISNULL(D6), D6 = "", ISNULL(D5), D5 = ""), D5, ROUND(D5, D6))

改成

IF(OR(ISNULL(D6), D6 = "", ISNULL(D5), D5 = ""), D5, format(D5, LEFT("0.0000000000000000",D6+2)))

最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-6-30 15:57

image.png

  • sk sk(提问者) 不能直接固定保留位数,需要根据下面的字段判断实际保留位数
    2025-06-30 16:04 
最佳回答
0
技术支持--哈哈Lv4初级互助
发布于2025-6-30 15:58
1. 问题分析

当前公式ROUND(D5, D6)虽然能按位数四舍五入,但无法保留末尾的零。例如:

  • 输入:1.2000(存储值),D6=4

  • 期望显示:1.2000

  • 实际显示:1.2

2. 解决方案

使用TEXT函数强制显示指定位数的小数:

IF(OR(ISNULL(D6), D6="", ISNULL(D5), D5=""), D5, TEXT(ROUND(D5, D6), "0." & REPEAT("0", D6)))
公式说明:
  • REPEAT("0", D6):根据D6的值生成对应数量的"0"

  • "0." & ...:拼接成数字格式字符串(如"0.0000")

  • TEXT(..., format):将四舍五入后的数值按指定格式输出

3. 效果对比
存储值D6原公式结果新公式结果
1.234541.23451.2345
1.200041.21.2000
1.521.51.50
4. 注意事项
  1. 此方法会强制补零到指定位数

  2. 如果D6为0,需单独处理整数情况:

IF(D6=0, TEXT(ROUND(D5, 0), "0"), TEXT(ROUND(D5, D6), "0." & REPEAT("0", D6)))

数字格式示例(图示:保留指定位数的显示效果参考)

  • sk sk(提问者) 你好,TEXT函数是不是FR10不支持
    2025-06-30 16:03 
最佳回答
0
ID1208Lv6高级互助
发布于2025-6-30 16:01

如果是数据库中需要保留0,可以调整数据库字段长度

参考--https://blog.csdn.net/qiuxuezhe_fei/article/details/126163179

  • 4关注人数
  • 39浏览人数
  • 最后回答于:2025-6-30 16:06
    请选择关闭问题的原因
    确定 取消
    返回顶部