decimals数据格式化
格式化数据,以便移动端UI显示。
1. 保留小数
无小数部分,则保留整数;有小数部分保留两位小数
1.1 iOS
+ (NSString *)formatFloat:(float)num
{
if (fmodf(num, 1) == 0) {
return [NSString stringWithFormat:@"%.0f",num];
}
else if (fmodf(num * 10, 1) == 0) {
return [NSString stringWithFormat:@"%.2f",num];
}
else {
return [NSString stringWithFormat:@"%.2f",num];
}
}
fmodf()是一个C函数,计算除法运算x / y的浮点余数
float fmodf(float x,float y);
double fmod(double x,double y);
long double fmodl(long double x,long double y);
虽然客户端也可以处理,如果数据来源于服务端的话,最好让服务端处理好,客户端只拿数据,显示数据,尽量不做过多的数据处理。
2 去除小数点后多余的 0
- 去除小数点后多余的 0,如果小数点后无 0,一并去除小数点。例:123.010000,去除后得到结果123.01。543.000000,去除后得到结果543。
2.1 iOS
iOS系统提供了简单的转换方法,NSNumber类型的数据转成字符串类型就去掉了末尾无用的 0。
+ (NSString *)numberStringFormat:(NSString *)numStr
{
return [NSString stringWithFormat:@"%@",@([numStr floatValue])];
}
NSString -> NSNumber -> NSString
2.2 C#
ToString(“g0”)函数是一种格式化decimal类型数的函数,直接去除末尾多余的0。
Console.WriteLine(0.99991000000000000.ToString("g0"));
TrimEnd()函数可以去除以 ‘x’ 结尾的字符,去除以 0 结尾的字符,但是需要注意的是,它是去掉所有以 0 结尾的数,包括小数点前面以 0 结尾的。
Console.WriteLine(0.99991000000000000.ToString().TrimEnd('0'));
如果要使用TrimEnd()的话,需要先取出小数部分,然后使用TrimEnd()函数去掉末尾无用的,再加上之前去掉的整数部分。