首页 > 用户发贴区 > 编程问题提问区 > 新手,精确表示时间的问题
2007
11-06

新手,精确表示时间的问题

问题:把560分钟换算成小时和分钟表示.


以下是我写的,但和实际数值有误差,请问错在哪里.


    main()
{
  int a,b,x=560; /*560分钟用小时和分钟表示*/
  a=x/60;
  b=x%60;
  printf(“560s=%d,%d\n”,a,b);
  getch()


;}


不好意思,问题可能有点低能


新手,精确表示时间的问题》有 4 条评论

  1. 5iluo 说:

    a = x/60;

    b = x – 60*a;

  2. xstar 说:

    方法是对的!不知道你指的错误是什么?

  3. sayme86 说:

    先谢谢xstar和5iluo.我指的是由于560和60的商是实数,所以以上程序

    的结果不是精确数字.像此类问题是不是有精确的程序.

  4. xstar 说:

    需要“精确”数字也可以!用float或double定义!不过得到的值就需要自己区分整数部分和小数部分了!

    float a;
    float b;
    a = (float)560/(float)50;

    a = 9.333333;

    不过由于计算机的一些特点,其实单精度和双精度值的在计算机里的表示也不是特别”精确”。

    另外为什么用int型等整型来计算此类问题呢?
    因为这个正好利用了c语言在做整型除法时的一个特点:它会把数值的小数部分舍去,而不是我们所熟悉的四舍五入!这里正好得到整数的小时部分,取余正好得到分钟部分!
    这个还可以应用在分割文件工具中,可以用来计算需要几个文件和最后一个文件的大小!
    (如果取余为0,则除出来的数不需要加一,否则除出来的整数个文件数需要加一!)

留下一个回复