热门 购物 团购 理财 文学 人才 体育 汽车 游戏 软件 军事 音乐 视频 媒体 论坛 博客 银行 交友 综合
一起购 唯品会 梦芭莎 趣玩网 凡客诚品 麦考林 乐淘鞋网 弗克尚品 绿盒子 俏物悄语 新蛋网 当当网 玛萨玛索
拉手网 糯米网 爱帮团 聚划算 58团购 美团网 QQ团购 大众点评团 窝窝团 美淘网 满座网 团宝网 饭统饭团
起点网 榕树下 小说阅读 潇湘书院 红袖添香 幻剑书盟 新浪游戏 太平洋游戏 163邮箱 中国游戏 游戏中国 霏凡软件 铁血军事
访问本站赠送红包啦!凡在支付宝搜索数字口令 528131323 都将获得红包,天天搜索此口令天天得红包^_^
Health Sitology Family Finance Appliances Shopping Clothing Education Legal Rituals Beauty Property Travel Pet Medical Cyclopedia History Military Computers Sports Job Anecdote Geographic Mixed Entertain Literature Emotion Agriculture
/**
 * 任何人任何机构皆可用于任何项目,此软件免费无需书面授权
 * 在软件和软件的所有副本中都必须包含版权声明和软件相关注解
 *
 * 模块: number_format.c
 * 简述: 对浮点数进行四舍五入 以千位分隔符方式格式化一个数字
 * 作者: woods zhang  ->  hoojar@163.com -> http://www.hecart.com/
 * 版权: 2006-2018, 张树林 拥有此源码所有版权 (MIT许可协议)
 * Copyright 2006-2018, Woods Zhang All Rights Reserved (The MIT License)
 */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <ctype.h>

static inline double intpow10(int power)
{
    static const double powers[] =
    {
        1e0,  1e1,  1e2,  1e3,  1e4,  1e5,  1e6,  1e7,
        1e8,  1e9,  1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
        1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22
    };

    /* Not in lookup table */
    if (power < 0 || power > 22)
    {
        return pow(10.0, (double)power);
    }
    return powers[power];
}

/**
 * 对浮点数进行四舍五入
 *
 * @param val 要处理的值
 * @param dec 可选的十进制小数点后数字的数目
 * @return 返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)
 */
double php_round(double val, int dec)
{
    if (dec <= 0)
    {
        return round(val);
    }

    dec = intpow10(dec);
    return round(val * dec) / dec;
}

/**
 * 以千位分隔符方式格式化一个数字
 *
 * @param haystack 执行替换字符串
 * @return 执行成功后的字符串
 */
char *number_format(double d, int dec, char dec_point, char thousand_sep)
{
    int point = 0;
    static char fmt[50] = {0};
    sprintf(fmt, "%f", php_round(d, dec));

    char *str = fmt;
    while (*str)
    {
        if (*str == '.')
        {
            *str = dec_point;
            point = 1;
        }
        else if (point > 0)
        {
            if (point > dec)
            {
                *str = 0;
                break;
            }
            point++;
        }
        str++;
    }

    point = 0;
    int p = 0, i = strlen(fmt);
    while (*(--str))
    {
        --i;
        if (point > 0)
        {
            if (point % 3 == 0)
            {
                for (p = strlen(fmt); p >= i; --p)
                {
                    *(fmt + p + 1) = *(fmt + p);
                }
                *(fmt + i) = thousand_sep;
            }
            point++;
        }
        else if (*str == dec_point)
        {
            point = 1;
        }
    }

    return (fmt[0] == ',') ? fmt + 1 : fmt;
}

int main(void)
{
    double num = 123456.4569;
    printf("round dec 2 (%f): %f ", num, php_round(num, 2));
    printf("round dec 3 (%f): %f ", num, php_round(num, 3));
    printf("number_format: %s ", number_format(num, 2, '.', ','));
    printf("number_format: %s ", number_format(num, 3, '.', ','));
    return 0;
}
Reply content :
Photo link :
问:我为了节省硬盘空间,想把MP3转为WMA,因此安装了豪杰音频通2.5版,但我在使用时软件提示找不到WMA编码,并要求安装Windows Media Player 7.0以上版本,可Windows XP自带的就是Windows M…  Details
问:我在Windows 2000中格式化了我的MP3播放器后,只要再向里面复制音乐文件,系统就会提示erorr format。请问如何解决这个问题? 答:有些MP3播放器只能格式化成FAT文件系统,如果在…  Details
上一次格式化硬盘,还是在半年前。原因是电脑运行速度越来越慢,进行磁盘清理后也没有多大效果;而且文本文件无法直接双击打开,每次都得先进入记事本,麻烦死了。索性格式了C…  Details
问:最近我从网上下载了一些MIDI格式的音乐文件,解压缩后使用WMP播放出现问题,虽然播放时画面上也显示正在播放,音箱也是开着的,为什么还是没声音?答:如果播放其他声音文件正常,…  Details
问:我刚刚买了SONY推出的掌上游戏机PSP,从网上下载了很多MP4的视频文件,可是发现这些文件根本没办法在电脑上用“暴风影音”播放,请问应该怎么解决呢?答:PSP支持的MP4视频格式是苹果Q…  Details
大多数 Java 程序员都熟悉对 JAR 文件的基本操作。但是只有少数程序员了解 JAR 文件格式的强大功能。在本文中,作者探讨了 JAR 格式的许多功能和优势,包括打包、可执行的 JAR 文件、安全…  Details
咨询这个问题的朋友,相信一定是电脑的初学者,而且跳过了DOS系统的年代。单单就这个问题的回答,传统的方法是:使用win98的系统盘,引导系统到DOS,然后用format c:命令,就可以对c…  Details
许多人都可能又自己的asp个人主页,但有数据库权限的不会很多,今天我给一个方法。大家可以自己建 立一个库。不用access或sql server的格式。是自己建一个格式。(听起来很高深奥!以前…  Details
问:MIDI格式的音乐文件可以转换为WAV格式吗?如何转换? 答:MIDI格式转WAV格式有如下几种方法: (1)用WINGROOVE这款软波表软件直接转换(下载地址http://www.onlinedown.net/soft/3526.htm)。…  Details
利用Word.Application提供的方法,可以很轻易地将Word文档转化为HTML等其它格式,下面就是实现的全部的代码: Visual C#WordToHtml.aspx<%@ Page language="c#" Codebehind="WordToHtml.aspx.cs" Auto…  Details