急!!!又一个数据窗口列字段Format格式设置问题,再次请各位高手指点

时间:2021-05-27 14:39:39
在数据窗口对象中,字段名“rate”,是decimal(2,6)型

想用Format进行显示格式化,显示效果为:XXX%

Expression 为:

string( rate, "###.######%" )

rate*100 + '%'
两种表达式显示的效果一样,问题是:如果数值大于0,或有中间有0,就会出现错误的结果

测试数据
--------------------------------------------------------------------
表达式 rate数值 结果 √×
--------------------------------------------------------------------
string( rate, "###.######%" ) 0.01 1% √
或rate*100 + '%'          0.034 3.4% √
0.2345 23.45% √
0.1024 10.24% √
1.23 123% √

1.02 112% ×
1.205 121.5% ×
12.05 1215% ×
0.1002 10.12% ×
0.1203 12.13% ×


以上是测试的数据,请各位在给我指点一下,谢谢

10 个解决方案

#1


不是显示格式问题吧?
decimal(2,6)  改成decimal(12,6)看看

#2


写错了,是decimal(10,6),不行,不是这的问题

#3


直接在format中写:0.00%
不要再expression中写任何内容

#4


直接在format中写:0.00%
不要再expression中写任何内容
则:
0.2345 23.45% 
0.1024 10.24% 
1.23   123.00% 
1.02   102.00% 


如果需要得到如下效果:
0.2345 23.45% 
0.1024 10.24% 
1.23   123% 
1.02   102% 

则在expression中,写:if(rate * 100 = int(rate * 100), '0%', '0.##%')

#5


引用 3 楼 yyoinge 的回复:
直接在format中写:0.00%
不要再expression中写任何内容


先谢谢 yyoinge ,我先测试一下

#6


引用 3 楼 yyoinge 的回复:
直接在format中写:0.00%
不要再expression中写任何内容


再问一下yyoinge, 如果我想 rate > 0.01的用XX%来表示,rate < 0.01的用XX‰来表示,如何写,谢谢

#7


这个用format无法实现,因为在pb中format里面的‰不是系统预置的格式符号,无法对decimal类型的数据进行自动×1000并加上‰的处理(%是预置的格式符号,对decimal类型的数据,会自动进行×100并加上%的处理)

你只能通过计算列来实现:
添加一个计算列,表达式为:
if(rate >= 0.01, string(rate * 100) + '%', string(a * 1000) + '‰')

#8


引用 6 楼 chinalongfei 的回复:
引用 3 楼 yyoinge 的回复:
直接在format中写:0.00%
不要再expression中写任何内容


再问一下yyoinge, 如果我想 rate > 0.01的用XX%来表示,rate < 0.01的用XX‰来表示,如何写,谢谢







再次谢谢 yyoinge,你的方法1: if(rate * 100 = int(rate * 100), '0%', '0.##%')可以实现百分比显示,很不错,经过你的指点,我又找到一个更好的方法:

直接在format中写:##.######% 就可以了


yyoinge,你的方法2:
if(rate >= 0.01, string(rate * 100) + '%', string(a * 1000) + '‰')

还是会出现我开始所提出的问题



经过你的指点,我找到的最佳答案,实现百分比和千分比的格式显示,
供各位参考:

if( rate * 100 = int( rate * 100 ), '########%', if( rate > 0.01, '##.######%', rate * 1000 + '‰' ) )


谢谢 yyoinge,结贴,分照给

#9


直接在format中写:##.######% 就可以了

会出现

1.02 显示为 102.%

的情况

#10


你说的这个情况我发现了,结合你给的方法,得到下比较理想的方法:


if( rate * 100 = int( rate * 100 ), '########%', if( rate > 0.01, '##.######%', rate * 1000 + '‰' ) )

#1


不是显示格式问题吧?
decimal(2,6)  改成decimal(12,6)看看

#2


写错了,是decimal(10,6),不行,不是这的问题

#3


直接在format中写:0.00%
不要再expression中写任何内容

#4


直接在format中写:0.00%
不要再expression中写任何内容
则:
0.2345 23.45% 
0.1024 10.24% 
1.23   123.00% 
1.02   102.00% 


如果需要得到如下效果:
0.2345 23.45% 
0.1024 10.24% 
1.23   123% 
1.02   102% 

则在expression中,写:if(rate * 100 = int(rate * 100), '0%', '0.##%')

#5


引用 3 楼 yyoinge 的回复:
直接在format中写:0.00%
不要再expression中写任何内容


先谢谢 yyoinge ,我先测试一下

#6


引用 3 楼 yyoinge 的回复:
直接在format中写:0.00%
不要再expression中写任何内容


再问一下yyoinge, 如果我想 rate > 0.01的用XX%来表示,rate < 0.01的用XX‰来表示,如何写,谢谢

#7


这个用format无法实现,因为在pb中format里面的‰不是系统预置的格式符号,无法对decimal类型的数据进行自动×1000并加上‰的处理(%是预置的格式符号,对decimal类型的数据,会自动进行×100并加上%的处理)

你只能通过计算列来实现:
添加一个计算列,表达式为:
if(rate >= 0.01, string(rate * 100) + '%', string(a * 1000) + '‰')

#8


引用 6 楼 chinalongfei 的回复:
引用 3 楼 yyoinge 的回复:
直接在format中写:0.00%
不要再expression中写任何内容


再问一下yyoinge, 如果我想 rate > 0.01的用XX%来表示,rate < 0.01的用XX‰来表示,如何写,谢谢







再次谢谢 yyoinge,你的方法1: if(rate * 100 = int(rate * 100), '0%', '0.##%')可以实现百分比显示,很不错,经过你的指点,我又找到一个更好的方法:

直接在format中写:##.######% 就可以了


yyoinge,你的方法2:
if(rate >= 0.01, string(rate * 100) + '%', string(a * 1000) + '‰')

还是会出现我开始所提出的问题



经过你的指点,我找到的最佳答案,实现百分比和千分比的格式显示,
供各位参考:

if( rate * 100 = int( rate * 100 ), '########%', if( rate > 0.01, '##.######%', rate * 1000 + '‰' ) )


谢谢 yyoinge,结贴,分照给

#9


直接在format中写:##.######% 就可以了

会出现

1.02 显示为 102.%

的情况

#10


你说的这个情况我发现了,结合你给的方法,得到下比较理想的方法:


if( rate * 100 = int( rate * 100 ), '########%', if( rate > 0.01, '##.######%', rate * 1000 + '‰' ) )