如何实现后台返回的数据有.00或.0,显示时若是整数不显示小数点和小数电以后的0,小数显示小数点

本文介绍了一个Objective-C方法,用于处理后台返回的数值数据,在显示时去除整数部分后面不必要的小数点和0,同时保持小数的正确显示。通过分析字符串并移除末尾的0和小数点,确保了数值的简洁性和准确性。

如何实现后台返回的数据有.00或.0,显示时若是整数不显示小数点和小数电以后的0,小数显示小数点。
解决方案,识别出这种整数,把它截去:

-(NSString *)getIntStrWithStr:(NSString *)str
{
    if(isCommonUnitEmptyString(str))
    {
        return @"";
    }
    if([str rangeOfString:@"."].location == NSNotFound)
    {
        return str;
    }
    NSInteger i = str.length-1;
    for(; i > 0; i--)
    {
        NSString *str1 = [str substringWithRange:NSMakeRange(i, 1)];
        if(!([str1 isEqualToString:@"0"] || [str1 isEqualToString:@"."]))
        {
            break;
        }
    }
    if(i+1 == str.length)
    {
        return str;
    }
    else
    {
        return [str substringToIndex:(i+1)];
    }
}

//判断字符串为空
static inline BOOL isCommonUnitEmptyString(NSString *str) {
    return ([str isKindOfClass:[NSNull class]] || str == nil || ![str isKindOfClass:[NSString class]] || [str length] < 1);
}

使用的方法

- (void)setModel:(LCNewYearDinnerModel *)model {
    _model = model;
    model.cost_price = [self getIntStrWithStr:model.cost_price];
    model.price = [self getIntStrWithStr:model.price];
    [self.originPrice setText:[NSString stringWithFormat:@"门店价格:¥%@", model.cost_price]];
    [self.price setText:[NSString stringWithFormat:@"¥%@", model.price]];
}

后台返回的数据:

	errcode = 1,
	data = 	(
			{
			price = "1688.00",
			cost_price = "1888.00",
			use_start_time = "12.20",
			use_end_time = "01.30",
			suppliers_name = "兰小溪特色美食餐厅",
			goods_name = "年夜饭",
			goods_id = 132,
		},
	),

在这里插入图片描述

在Java中计算百分比并格式化输出时,可以采用以下方法来实现需求:计算百分比并保留两位小数,如果小数部分为`.00`,则仅显示整数部分。 ### 方法一:使用 `DecimalFormat` 格式化输出 `DecimalFormat` 是 Java 中处理数字格式化的常用类。可以通过定义格式模式,来控制输出样式。例如: ```java import java.text.DecimalFormat; public class PercentageExample { public static void main(String[] args) { double numerator = 20; double denominator = 10; // 计算百分比 double percentage = (numerator / denominator) * 100; // 定义格式化模式,根据需求动态显示小数部分 DecimalFormat df = new DecimalFormat("0.##"); String formattedPercentage = df.format(percentage) + "%"; System.out.println(formattedPercentage); } } ``` - 当 `percentage` 为 `200.00` 时,输出为 `200%`。 - 当 `percentage` 为 `66.67` 时,输出为 `66.67%`。 ### 方法二:使用 `String.format()` 实现格式化 如果希望以更简洁的方式处理,可以结合 `String.format()` 进行百分比计算格式化输出: ```java public class PercentageExample { public static void main(String[] args) { double numerator = 20; double denominator = 10; // 计算百分比 double percentage = (numerator / denominator) * 100; // 使用 String.format 格式化输出 String formattedPercentage = String.format("%.2f%%", percentage).replaceAll("\\\.00", ""); System.out.println(formattedPercentage); } } ``` - 当 `percentage` 为 `200.00` 时,输出为 `200%`。 - 当 `percentage` 为 `66.67` 时,输出为 `66.67%`。 ### 方法三:结合 `NumberFormat` 条件判断 通过 `NumberFormat` 可以更灵活地控制数字格式化行为,同时可以结合条件判断来处理 `.00` 的情况: ```java import java.text.NumberFormat; public class PercentageExample { public static void main(String[] args) { double numerator = 20; double denominator = 10; // 计算百分比 double percentage = (numerator / denominator) * 100; NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); nf.setMinimumFractionDigits(0); String formattedPercentage = nf.format(percentage) + "%"; System.out.println(formattedPercentage); } } ``` - 当 `percentage` 为 `200.0` 时,输出为 `200%`。 - 当 `percentage` 为 `66.67` 时,输出为 `66.67%`。 ### 小数点后为 `.00` 时只显示整数部分 为了实现小数部分为 `.00` 时仅显示整数部分,可以通过正则表达式替换 `.00` 部分: ```java String formattedPercentage = df.format(percentage).replaceAll("\\\.00", "") + "%"; ``` 此方法会将格式化后的字符串中的 `.00` 替换为空,从而实现显示整数部分。 ### 总结 Java 中计算百分比并格式化输出时,可以使用 `DecimalFormat`、`String.format()` `NumberFormat` 等工具类来实现。通过定义格式化规则,可以灵活控制输出样式,满足同的需求,例如保留两位小数小数部分为 `.00` 时仅显示整数部分[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值