增加千字符分隔符


给定一个合法的数,返回带千字符逗号分隔的数据。

说明:
1、包括正负整数
2、可以考虑正负浮点数。如果给定的数带小数点,从小数点开始往左边方向,每隔三个数字增加一个逗号,小数点向右方向每隔三个数字增加一个小数点。

示例1:
给定正整数输入:1234567
输出:1,124,567

示例2:
给定负整数输入:-25896
输出:-25,896

示例3:
给定正整数输入:1234567.36958
输出:1,124,567.369,58

示例4:
给定负整数输入:-25896.4521897
输出:-25,896.452,189,7


public class Separator {

	public static void main(String[] args) {
		System.out.println(getSeparator(1234567));
		System.out.println(getSeparator(-25896));
		System.out.println(getSeparator(1234567.36958));
		System.out.println(getSeparator(-25896.4521897));
		System.out.println(getSeparator(-1234576));
		System.out.println(getSeparator(-1234574.12845));
		System.out.println(getSeparator(-1234572));
		System.out.println(getSeparator(-1234598d));
	}
	
	public static String getSeparator(int nums) {
		if (nums == 0) {
			return "0";
		}
		boolean lsZero = nums < 0;
		String n = String.valueOf(lsZero ? -nums : nums);
		StringBuilder sb = new StringBuilder();
		sb.append(getSeparator(n , false));
		return lsZero ? "-" + sb.toString() : sb.toString();
	}
	
	public static String getSeparator(String nums , boolean isDouble) {
		String n = String.valueOf(nums);
		char[] arr = n.toCharArray();
		if (arr != null && arr.length != 0) {
			StringBuilder sb = new StringBuilder();
			int length = arr.length;
			if (isDouble) {
				for (int i=0; i<length; i++) {
					if (i!=0 && i%3==0) {
						sb.append(",");
					}
					sb.append(arr[i]);
				}
			} else {
				for (int i=length-1,j=0;i>=0;i--,j++) {
					if (j!=0 && j%3==0) {
						sb.append(",");
					}
					sb.append(arr[i]);
				}
			}
			return isDouble ? sb.toString():sb.reverse().toString();
		} else {
			return "0";
		}
	}
	
	public static String getSeparator(double nums) {
		if (nums == 0) {
			return "0";
		}
		boolean lsZero = nums < 0;
		String n = String.valueOf(lsZero ? -nums : nums);
		boolean isDouble = n!=null && n.contains(".");
		StringBuilder sb = new StringBuilder();
		if (isDouble) {
//			System.out.println(n);
			String[] arr = n.split("\\.");
			sb.append(getSeparator(arr[0] , false));
			sb.append(".");
			sb.append(getSeparator(arr[1] , true));
		} else {
			sb.append(getSeparator(n , false));
		}
		return lsZero ? "-" + sb.toString() : sb.toString();
	}

}

可以考虑取余1000


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以使用字符串格式化来将数字增加分位分隔符输出。具体方法如下: 1. 使用字符串格式化符号“{:,}”来表示分位分隔符。 2. 将需要输出的数字放在字符串格式化符号中。 例如,将数字123456789输出为带分位分隔符字符串,可以使用以下代码: num = 123456789 formatted_num = "{:,}".format(num) print(formatted_num) 输出结果为: 123,456,789 注意,使用字符串格式化符号“{:,}”时,需要将数字转换为字符串类型。 ### 回答2: 在Python中,我们可以使用 "format()" 函数来将数字增加分位分隔符输出。 格式化字符串的基本语法是使用 % 符号和符号来作为标记,在 % 后面跟随一个格式控制字符串。关于“%”符号,它的作用是一个place holder,表示需要被替换的值。 在格式化字符串中,我们需要使用花括号 {} 表示需要替换为变量或值的部分。例如,我们可以使用如下代码格式化出一个带有分位分隔符的数字: ```python number = 1234567890 formatted_number = "{:,}".format(number) print(formatted_number) # 1,234,567,890 ``` 在上述代码中,我们首先将要格式化的数字赋值给变量 number,然后使用“{:,}”格式控制字符串将这个数字转换为带分位分隔符的格式,并将格式化后的字符串赋值给 formatted_number 变量,最后通过 print() 函数将其输出。 这种格式化方法在所有版本的Python中都可用,而且在输出金融数据等上需要用到分位分隔符的场景中十分实用。 ### 回答3: 在 Python 中,如果想要将数字增加分位分隔符输出,最简单的方法是使用字符串的 format() 方法和格式化字符串语法。format() 方法可以接收一个或多个位置参数,并将其插入到字符串中的占位符中。 在使用 format() 方法时,我们可以在插入的数字之间加上适当的分隔符。一般而言,我们可以使用逗号(,)作为分位分隔符。例如,我们要将数字 1234567890 输出为字符串时,可以这样写: ``` x = 1234567890 formatted_x = "{:,}".format(x) print(formatted_x) ``` 这段代码将输出 1,234,567,890,即数字 1234567890 对应的字符串。 除了使用 format() 方法,我们还可以使用 f-string(格式化字符串)来实现数字分隔符的输出。f-string 是在 Python 3.6 中引入的一种字符串格式化语法,其语法类似于格式化字符串语法,但使用更加方便简洁。 使用 f-string 来输出分位分隔符的数字也非常简单。与上面的例子相比,我们只需要将字符串中的占位符用大括号包裹,然后在大括号中添加 :,并在 : 后面加上逗号。例如: ``` x = 1234567890 formatted_x = f"{x:,}" print(formatted_x) ``` 这段程序将输出与上面相同的结果,即 1,234,567,890。 在使用 f-string 时,我们不仅可以添加分位分隔符,还可以添加其他的格式化选项,例如宽度、精度、填充字符等。例如,如果我们想将数字格式化为宽度为 20,精度为 2 的浮点数,可以这样写: ``` x = 1234567890 formatted_x = f"{x:20,.2f}" print(formatted_x) ``` 这段程序将输出一个宽度为 20,精度为 2 的浮点数,并添加了分位分隔符。运行结果如下: 1,234,567,890.00 以上就是在 Python 中将数字增加分位分隔符输出的方法。无论是使用 format() 方法还是 f-string,注重格式化字符串的准确书写和使用方法,都可以让程序在输出分位分隔符的数字时更加准确和规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值