您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言打印出美元一美分值的方法

时间:12-30来源:作者:点击数:

C语言并没有提供打印美元一美分值的现成功能。然而,这并不是一个难题,编写一个输出货币值的函数是非常容易的。当你编写了一个这样的函数后,你就可以在任何需要它的程序中调用它了。

这样的函数往往既短小又简单,下文中将简单地描述它的工作方式。在本书中,这个函数被分解成几个较小的容易编写的程序段,因而很容易理解。把一个程序分解为较小的程序段的原因在第11章中已经介绍过了。

这个函数需要使用一些标准C函数,因此你需要包含一些相应的头文件。在任何使用这个函数的程序的开头,你都应该确保包含以下这些头文件:

#tinclude <stdio. h>
#include <stdlib. h>
# include <math. h>
# include <string. h>

包含了所需的头文件后,你就可以创建一个接受美元值并按带逗号的形式打印该值的函数:

void PrintDollars( double Dollars )
{
    char buf[20];
    int  l , a;
   sprintf( buf, " %olf", Dollars );
   l = strchr( buf, '.') - buf;
   for(a= (Dollars<0.0); a<1; ++a)
        printf( "%c", buf[a]) ;
        if(( ( ( l - a ) % 3) == 1 )&&(a !=l - 1 ) )
            printf( " ," ) ;
  }

你可能习惯于用浮点数来表示实数,这是很平常的。然而,浮点数通常不适合于金融工作,因为它有较大程度的不准确性,例如舍入错误。双精度类型的准确度比浮点数高得多,因此它更适合于真正的数字工作。

只要写一个把整数值传递给该函数的程序,你就可以很方便地测试该函数。然而,该函数还不能打印小数或“零头”,为此,还要专门编写一个完成这项工作的函数:

void PrintCents ( double Cents)
{
   char buf[10 ];
   sprintf( buf, "%-. 02f" , Cents );
   printf("%s\n" , bur + 1 + (Cents <= 0) );

上述函数接受一个小数值并按正确的格式打印该值。同样,只要编写一个把小数值传递给该函数的程序,你就可以测试该函数了。

现在你已经有了两个函数:一个能打印货币值的美元部分(整数部分),另一个能打印货币值的美分部分(小数部分)。你当然不希望先把一个数分解成两部分,然后再分别调用这两个函数!但是,你可以编写一个函数,用它来接受货币值并把该值分解成美元和美分两部分,然后再调用已有的另外两个函数。这个函数如下所示:

void DollarsAndCents ( double Amount )
{
     double Dollars = Amount >= 0.0 ? floor( Amount ) : ceil(Amount) ;
     double Cents = Amount - (double) Dollars;
     if ( Dollars < 0.0 ) printf( "-"  );
     printf( " $" );
     PrintDollars ( Dollars ) ;
     PrintCents ( Cents ) ;
}

这就是所要的函数! DollarsAndCents()函数接受一个实数值(double类型),并按美元一美分的格式把该值打印到屏幕上。如果你要测试一下这个函数,你可以编写一个main()函数,让它去打印多个美元一美分值。下面就是这样的一个函数:

  int main()
  {
    double num= . 0123456789;
    int a ;
    for(a = 0; a<12; ++a )
    {
        DollarsAndCents( num );
        num *= 10.0;
    }  
    return( 0 );
}

它的输出结果为:

    $O.01
    $O.12
    $1.23
    $12.35
    $123.46
    $1,234.57
    $12,345.68
    $123,456.79
    $1,234,567.89
    $12,345,678.90
    $123,456,789.OO
    $1,234,567,890.OO

如果你想按其它的形式打印货币值,你可以很方便地修改这个程序,使其按其它格式打印数字。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门