數字型轉文字型,如何保留千位符

2021-04-19 06:16:51 字數 1656 閱讀 6659

當然可以直接操作字串,每隔三位加乙個逗號進去,不過感覺有些麻煩了。今天正好遇到使用者有這個需求,在網上搜了一下,找到乙個簡單的辦法,經測試ok,簡單實現**如下:

data: v_c(20) type c,

v_n type p decimals 2.

v_n = 5422121.23.

write v_n to v_c.

write v_c.

原來只要採用write方式賦值,就可以保留千位符,呵呵。不過,文字型的變數不能是string型的,只能是c型的,不然會報錯。

手工的辦法也不是沒有,網上也找到了乙個函式,沒有測試,僅供參考:

form numtostr using value(znum) changing value(zstr).

data : zclen type i,

n type i,

zcstr(20) type c,

zcstr2(20) type c,

zctemp(3) type c,

zflag(1) type c value '.',

zflag2 type i value 0,

zcdec(20) type c. "記錄小數部分.

zstr = ''.

check znum <> 0.

if znum <= -1000.

zflag2 = 1.

znum = abs( znum ).

endif.

if znum >= 1000.

zcstr = znum.

"壓縮字串,去除前面的空格。

condense zcstr no-gaps.

" 分離整數與小數,好單獨處理整數。

split zcstr at zflag into zcstr zcdec.

zclen = strlen( zcstr ).

" 在迴圈中從右面在每三位的前面加上乙個逗號。

while zclen > 3.

n = zclen - 3.

zctemp = zcstr+n(3).

if not zcstr2 is initial.

concatenate zctemp zcstr2 into zcstr2 separated by ','.

else.

zcstr2 = zctemp.

endif.

zclen = zclen - 3.

endwhile.

" 將不剩下的不足三位數加到前面

concatenate zcstr+0(zclen) zcstr2 into zcstr2 separated by ','.

if zflag2 = 1.

concatenate '-' zcstr2 into zcstr2.

endif.

clear zcstr.

" 將處理過的整數與小數連線起來。

concatenate zcstr2 zcdec into zcstr separated by zflag.

" 將值返回

zstr = zcstr.

else.

zstr = znum.

endif.

endform.

數字型轉文字型,如何保留千位符

數字型轉文字型,如何保留千位符 當然可以直接操作字串,每隔三位加乙個逗號進去,不過感覺有些麻煩了。今天正好遇到使用者有這個需求,在網上搜了一下,找到乙個簡單的辦法,經測試ok,簡單實現 如下 data v c 20 type c,v n type p decimals 2.v n 5422121.2...

Oracle數字型,字元型,日期型函式

一.數字型函式 在oracle資料庫中,dual表示真實存在的,它本身包含了乙個dummy欄位,如果使用者刪除了該錶,則oracle將無法啟動。下面記錄的是部分函式。mod n1,n2 求餘,當n2為0時,返回的是n1。sign n 函式,返回引數n的符號。即正數返回1,負數返回 1,0就返回0。r...

sql數字型 字元型注入的區別

當輸入的參 x 為整型時,通常 abc.php 中 sql 語句型別大致如下 select from 表名 where id x 這種型別可以使用經典的 and 1 1 和 and 1 2 來判斷 url 位址中輸入 www.com abc.php?id x and 1 1 頁面依舊執行正常,繼續進...