我想实现的功能:100 = 100
1000 = 1000
10000 = 10000
100000 = 10万
1000000 = 100万
      .
      .
      .
      .
100000000 = 1亿
1000000000 = 10亿
10000000000 = 100亿
100000000000 = 1000亿这样的转换函数?这只是整数的例子,还需要计算小数,比如:1555000000 = 15.55亿;10033300000 = 100.33亿;10033800000 = 100.33亿很乱,而且我这人数学非常不好,位数一长了看着就头晕,那位大能帮个忙,给写下,万分感谢!

解决方案 »

  1.   


    function change( $num )
    {
    if( $num >= 100000000000 )
    {
    echo "error , the num too large";
    }
    elseif( $num >= 100000000 )
    {
    echo $num/100000000 . "亿";
    }
    elseif( $num >= 10000 )
    {
    echo $num/10000 . "万";
    }
    else
    {
    echo $num;
    }
    }
      

  2.   

    php里面好象没有这样的内建函数吧!只能按照楼上的流程控制语句分别判断了
      

  3.   


    echo myc(1555000000000) ; //测试数字function myc($c){
    $i = 1 ;
    $j = -1 ;
    $out = array();
    $arr = array('万','亿','兆');
    while(($c / ($i * 10000)) > 1){
      $i = $i * 10000 ;
      $j++ ;
      if($j > 2){
        exit('数字益出了');
      }
      $out[] = $c /$i  ;
    }
    if($j == -1){
      return $str = $c ;
    }else{
      return $str = end($out) . $arr[$j];
    }
    }
      

  4.   


    ++++++++++这个OK
    系统是不可能有处理这么精细的函数,只有最基本的以供操作,其他都是自定义。不过PHP的函数库还是非常强大的。至少比ASP强壮几倍!
      

  5.   


    楼上的补充以后也挺好用的
    <?phpecho change(300100); //测试数字
    function change($num) {
    if($num >= 100000000000) {
    $str = "error , the %f too large";
    } elseif($num >= 100000000) {
    $num =$num / 100000000;
    $str = '%.2f亿';

    } elseif($num >= 10000) {
    $num =$num / 10000;
    $str = '%.2f万';
    } else {
    $str = '%d';
    }

    return sprintf($str, $num);
    }
      

  6.   

    稍微改了一下,使函数处理不了的大数值原样输出<?php
    echo myc(10330000000000000) ; //测试数字function myc($c){
    $i = 1 ;
    $j = -1 ;
    $out = array();
    $arr = array('万','亿','兆');
    while(($c / ($i * 10000)) > 1){
      $i = $i * 10000 ;
      $j++ ;
      if($j > 2){
        return sprintf("%.0f",$c);
    exit();
      }
      $out[] = $c /$i  ;
    }
    if($j == -1){
      return $str = $c ;
    }else{
      return $str = end($out) . $arr[$j];
    }
    }
    ?>万分感谢以上朋友的帮助!
      

  7.   

    其实我做的是个返利的程序,应该用不到这么大的数,暂时程序中代现金比现金大100倍,如果能到百万就说明他获得了至少1万的返利,这已经很了不得了,但由于不保证程序以后的代现金不会比现金大1000倍10000倍,所以还是越大越好。因为life169的函数可以处理到百兆,所以采用该函数,再次对上面的所有朋友表示感谢!