| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1287 人关注过本帖
标题:一道题 有点想不通 大家帮帮忙 呵呵谢谢
只看楼主 加入收藏
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
一道题 有点想不通 大家帮帮忙 呵呵谢谢
现在假设摆在你面前有若干金钱,请按照指定的格式输出金额,要求小数点前每3位加个千位分隔符(,)小数点后四舍五入保留2位.
四舍五入没什么问题,那个小数点前每3位加个千位分隔符(,)怎么实现啊 想把它转换成字符数组操作好像不很好啊  呵呵  高手给点想法  谢谢
搜索更多相关主题的帖子: 小数点 
2011-01-20 20:45
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:3 
从尾往首的添加

想把它转换成字符数组操作好像不很好啊?
//我感觉很好啊,

[ 本帖最后由 BlueGuy 于 2011-1-20 20:53 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-01-20 20:52
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:3 
第一,输入什么,非字符串数组OK吗?
第二,数据大小如何
第三,用个么编译器

小代码,大智慧
2011-01-20 20:55
xxfxie51
Rank: 1
等 级:新手上路
帖 子:3
专家分:9
注 册:2011-1-19
收藏
得分:3 
假设该数为1234567
把那个数%1000 得到余数567
计算该数是否大于1000*1000 大于再求余数 得234567
234567除以1000  得到中间的234

可以实现不?
2011-01-20 21:46
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
收藏
得分:3 
果断用字符串处理

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2011-01-20 21:49
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
比如输入123456.789123......(double型)
结果输出为
123,456.79
呵呵  不想用字符串啊   好麻烦的 感觉

粗心是大敌
2011-01-20 22:02
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:3 
感觉除了字符串还能往里加东西吗?知道的麻烦说下,谢谢。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-01-20 22:54
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
程序代码:
#include<stdio.h>

int main()
{
   char str[90];
   int i,j=0,poin;

   gets(str);

   for(poin=0;str[poin]!='.'&&str[poin];poin++); // 第几位小数点
  /*
      这段添加健壮代码,例如排除非数字的情况,还有异常
  */
   if(str[poin])
   {
       for(i=0;i<poin;i++)         
     {
       putchar(str[i]);

       if(i==poin%3-1&&poin>2)       //处理第一个情况,而且排除不能加,号情况
           putchar(',');
       else
        {
           if(i>poin%3-1&&j+3<poin){  //通式,排除小数点前面个数为3倍情况
          
            ++j;
              if(!(j%3))
            {
              putchar(',');
             }

           }
       }

     }

          puts(str+poin);                 //排输出小数点后字符串
   }
   else
       puts(str);

   getchar();
   return 0;
}


用字符串的确有点麻烦,呵呵。

[ 本帖最后由 点线面 于 2011-1-21 01:59 编辑 ]

小代码,大智慧
2011-01-21 01:39
Kabie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:185
注 册:2009-8-21
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <locale.h>

int main()
{
    char *l=setlocale ( LC_NUMERIC, "en_US" );
    if (l) {
        printf("%'.2f\n",1234567890.987654321);
    }
}

偷懒的做法……

[ 本帖最后由 Kabie 于 2011-1-21 08:59 编辑 ]
2011-01-21 08:57
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:3 
回复 8楼 点线面
double db;
scanf("%lf",&db);
sprintf(str,"%lf",db);
加个输入double数据就更省事了。

帮人《---》帮己
2011-01-21 11:06
快速回复:一道题 有点想不通 大家帮帮忙 呵呵谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018583 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved