/**
* 任何人任何機(jī)構(gòu)皆可用于任何項(xiàng)目,此軟件免費(fèi)無(wú)需書面授權(quán)
* 在軟件和軟件的所有副本中都必須包含版權(quán)聲明和軟件相關(guān)注解
*
* 模塊: number_
* 簡(jiǎn)述: 對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入 以千位分隔符方式格式化一個(gè)數(shù)字
* 作者: woods zhang -> hoojar@163.com ->
* 版權(quán): 2006-2018, 張樹(shù)林 擁有此源碼所有版權(quán) (MIT許可協(xié)議)
* Copyright 2006-2018, Woods Zhang All Rights Reserved (The MIT License)
*/
#include <;
#include <;
#include <ma;
#include <;
#include <c;
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, (double)power);
}
return powers[power];
}
/**
* 對(duì)浮點(diǎn)數(shù)進(jìn)行四舍五入
*
* @param val 要處理的值
* @param dec 可選的十進(jìn)制小數(shù)點(diǎn)后數(shù)字的數(shù)目
* @return 返回將 val 根據(jù)指定精度 precision(十進(jìn)制小數(shù)點(diǎn)后數(shù)字的數(shù)目)進(jìn)行四舍五入的結(jié)果。precision 也可以是負(fù)數(shù)或零(默認(rèn)值)
*/
double php_round(double val, int dec)
{
if (dec <= 0)
{
return round(val);
}
dec = intpow10(dec);
return round(val * dec) / dec;
}
/**
* 以千位分隔符方式格式化一個(gè)數(shù)字
*
* @param haystack 執(zhí)行替換字符串
* @return 執(zhí)行成功后的字符串
*/
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;
}
1.《(如何格式化c盤)u盤一打開(kāi)就讓格式化怎么辦》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《(如何格式化c盤)u盤一打開(kāi)就讓格式化怎么辦》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/keji/3208282.html