printf如何将数字输出为三位一撇?Windows系统 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    比如:将12345.67输出为12,345.67 绣林 回复于:2004-04-07 09:52:59 首先申明我不是作者,这是我收藏的,原作者我记不清了,

printf如何将数字输出为三位一撇?Windows系统

。 cu的朋友提的这个问题,我用bsh编了一个,可能用得着,比较哆嗦,盼高手有更好的办法. 输入一个数字串,即自动加小数点并加分节号;如: 1

    比如: 将12345.67输出为  12,345.67

    绣林 回复于:2004-04-07 09:52:59首先申明我不是作者,这是我收藏的,原作者我记不清了。

    cu的朋友提的这个问题,我用bsh编了一个,可能用得着,比较哆嗦,盼高手有更好的办法.

    输入一个数字串,即自动加小数点并加分节号;如:

    123456789 得结果为:1,234,567.89

    9000000 得结果为:90,000.00

    #!/bin/sh

    # abc

    #

    if [ `expr length $1` -le 2 ];then

    echo "0"`echo "scale=2;$1/100"|bc`

    exit

    fi

    a=`echo "scale=2;$1/100"|bc|cut -d"." -f1`

    b=`echo "scale=2;$1/100"|bc|cut -d"." -f2`

    g=""

    while [ `expr length $a` -gt 3 ];do

    d=`echo "scale=3;$a/1000"|bc|cut -d"." -f1`

    c=`echo "scale=3;$a/1000"|bc|cut -d"." -f2`

    g="."$c$g

    a=$d

    done

    echo `echo $a$g|sed 's/\./,/g'`"."$b

    使用方法:sh abc测试数字

    sh abc 123456789  结果:1,234,567.89

    sh abc 900001000  结果:9,000,010,00

    sh abc 8000000 结果:80,000.00

    sh abc 12         结果:0.12

    li2002 回复于:2004-04-07 10:37:22思路不错,但正负以及数字的合法性没有考虑

    looxb 回复于:2004-04-07 10:44:46上面的shell有点不合理,应该考虑到字串中的小数点,效果应该象下面那样:

    0------------------0.00

    3------------------3.00

    0.3----------------0.30

    12345.6---------12,345.60

    c1l2d3 回复于:2004-04-07 10:56:50稍做改动即可:

    [code:1:6fd07b13de]#!/bin/sh

    # programname: abc

    #

    #

    if [ "$1" = "" ];then exit;fi

    if [ "$1" = "0" ];then echo 0.00;exit;fi

    if [ `expr substr $1 1 1` = "-" ];then

    int=`echo $1|sed 's/-//'`;f="-"

    else

    int=$1;f=""

    fi

    a=`echo $int|cut -d"." -f1`

    b=`echo $int|sed 's/'$a'//'`

    if [ "$b" = "" ];then b=".00";fi

    g=""

    while [ `expr length $a` -gt 3 ];do

    d=`echo "scale=3;$a/1000"|bc|cut -d"." -f1`

    c=`echo "scale=3;$a/1000"|bc|cut -d"." -f2`

    g=","$c$g

    a=$d

    done

    echo $f$a$g$b[/code:1:6fd07b13de]

    正负数都可以,但数字合法性需要另写判断了.

    yutian 回复于:2004-04-07 11:00:01还不错,需要改进

    楼主是不是问c里面的printf呀??

    萝卡 回复于:2004-04-07 21:16:33http://bbs.chinaunix.net/forum/viewtopic.php?t=217867

    阿骁 回复于:2004-04-12 23:22:02如果是 C 语言中的 printf 函数的话,不能直接实现的,需要自己写一个函数就可以实现的,

电脑资料

printf如何将数字输出为三位一撇?Windows系统》(https://www.unjs.com)。这个函数也不是很难的丫!

   

    原文转自:http://www.ltesting.net

免费领课

    比如:将12345.67输出为12,345.67 绣林 回复于:2004-04-07 09:52:59 首先申明我不是作者,这是我收藏的,原作者我记不清了,

printf如何将数字输出为三位一撇?Windows系统

。 cu的朋友提的这个问题,我用bsh编了一个,可能用得着,比较哆嗦,盼高手有更好的办法. 输入一个数字串,即自动加小数点并加分节号;如: 1

    比如: 将12345.67输出为  12,345.67

    绣林 回复于:2004-04-07 09:52:59首先申明我不是作者,这是我收藏的,原作者我记不清了。

    cu的朋友提的这个问题,我用bsh编了一个,可能用得着,比较哆嗦,盼高手有更好的办法.

    输入一个数字串,即自动加小数点并加分节号;如:

    123456789 得结果为:1,234,567.89

    9000000 得结果为:90,000.00

    #!/bin/sh

    # abc

    #

    if [ `expr length $1` -le 2 ];then

    echo "0"`echo "scale=2;$1/100"|bc`

    exit

    fi

    a=`echo "scale=2;$1/100"|bc|cut -d"." -f1`

    b=`echo "scale=2;$1/100"|bc|cut -d"." -f2`

    g=""

    while [ `expr length $a` -gt 3 ];do

    d=`echo "scale=3;$a/1000"|bc|cut -d"." -f1`

    c=`echo "scale=3;$a/1000"|bc|cut -d"." -f2`

    g="."$c$g

    a=$d

    done

    echo `echo $a$g|sed 's/\./,/g'`"."$b

    使用方法:sh abc测试数字

    sh abc 123456789  结果:1,234,567.89

    sh abc 900001000  结果:9,000,010,00

    sh abc 8000000 结果:80,000.00

    sh abc 12         结果:0.12

    li2002 回复于:2004-04-07 10:37:22思路不错,但正负以及数字的合法性没有考虑

    looxb 回复于:2004-04-07 10:44:46上面的shell有点不合理,应该考虑到字串中的小数点,效果应该象下面那样:

    0------------------0.00

    3------------------3.00

    0.3----------------0.30

    12345.6---------12,345.60

    c1l2d3 回复于:2004-04-07 10:56:50稍做改动即可:

    [code:1:6fd07b13de]#!/bin/sh

    # programname: abc

    #

    #

    if [ "$1" = "" ];then exit;fi

    if [ "$1" = "0" ];then echo 0.00;exit;fi

    if [ `expr substr $1 1 1` = "-" ];then

    int=`echo $1|sed 's/-//'`;f="-"

    else

    int=$1;f=""

    fi

    a=`echo $int|cut -d"." -f1`

    b=`echo $int|sed 's/'$a'//'`

    if [ "$b" = "" ];then b=".00";fi

    g=""

    while [ `expr length $a` -gt 3 ];do

    d=`echo "scale=3;$a/1000"|bc|cut -d"." -f1`

    c=`echo "scale=3;$a/1000"|bc|cut -d"." -f2`

    g=","$c$g

    a=$d

    done

    echo $f$a$g$b[/code:1:6fd07b13de]

    正负数都可以,但数字合法性需要另写判断了.

    yutian 回复于:2004-04-07 11:00:01还不错,需要改进

    楼主是不是问c里面的printf呀??

    萝卡 回复于:2004-04-07 21:16:33http://bbs.chinaunix.net/forum/viewtopic.php?t=217867

    阿骁 回复于:2004-04-12 23:22:02如果是 C 语言中的 printf 函数的话,不能直接实现的,需要自己写一个函数就可以实现的,

电脑资料

printf如何将数字输出为三位一撇?Windows系统》(https://www.unjs.com)。这个函数也不是很难的丫!

   

    原文转自:http://www.ltesting.net