Python基础教程之增加和去除数字的千位分隔符

作者:wmsofts 时间:2021-12-04 13:46:12 

前言

千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。

处理财务数据时,经常会和千分位符号打交道。经常看数字时,如果位数很多,往往要一位位的数,才知道具体的金额。如果有千分位符,那么一眼就知道金额的具体大小。目前千分位符在手机银行和计算器中较常见。

现编写2个函数,1个函数输入带千分位符的字符串(带千分位符就不再是数字了)输出数字,另1个函数输入数字(如果数字是小数则只保留小数点后2位)输出带千分位符的字符串。

1.去掉千分位

解析:千分位就是数字中的逗号,直接去掉逗号即可。

input_amount = input()
output_amount = float(input_amount.replace(',',''))
print('去掉千分位后的数字为', output_amount)

2.添加千分位

解析:千分位只针对整数部分,不针对小数部分。

千分位符是从右边开始,每隔3位数添加一个英文逗号,那么先把数字左右倒转(如23456->65432),然后遍历字符串每隔3个字符添加一个英文逗号,然后再次将字符串左右倒转,最后输出结果。

如果输入的数字是整数,流程如上。

如果输入的数字是小数,首先将小数拆分为整数部分和小数部分,最后将处理后的整数部分和原始的小数部分拼接起来作为结果输出。

添加千分位的步骤如下:

1. 拆分成整数部分和小数部分

# 将数字转为字符串
number = 12345
number_str = str(number)

# 拆分成整数部分和小数部分
number_str_list = number_str.split('.')
integer_part = number_str_list[0]
decimal_part = None if len(number_str_list) == 1 else number_str_list[1]

2.为整数部分添加千分位

new_integer_part = ''
reversed_integer_part = integer_part[::-1] # 将字符串左右反转
for i, c in enumerate(reversed_integer_part): # 遍历字符,每隔3个字符加逗号
   if i > 0 and i%3 == 0:
       new_integer_part = new_integer_part + ',' + c
   else:
       new_integer_part += c
new_integer_part = new_integer_part[::-1] # 将字符串左右反转

3.将整数部分和小数部分整合

if decimal_part:
   print('添加千分位后数字变为', new_integer_part + '.' + decimal_part)
else:
   print('添加千分位后数字变为', new_integer_part)

附:Python每三位用逗号分隔(千位分隔符)

用Python自带的format和str.format可以给整数、浮点数、复数、Decimal数添加千位分隔符。PEP 378标准里有千位分隔符的格式的详细说明。

以下用了两种方案实现:

用locale

import locale

# empty string for platform's default settings
locale.setlocale(locale.LC_ALL, '')
print(format(4901711, "n")) # -> 4,901,711
print("{:n}".format(4901711)) # -> 4,901,711
print("{:d}".format(4901711)) # 4901711

不用locale(推荐)

from decimal import Decimal

print(format(1234567, ',d'))
print('{:,d}'.format(1234567))
print(format(1234567.89, ',.2f'))
print(format(12345.6 + 8901234.12j, ',f'))
print(format(Decimal('1234567.89'), ',f'))

Python基础教程之增加和去除数字的千位分隔符

来源:https://blog.csdn.net/weixin_46265255/article/details/120686873

标签:python,千分位分隔符,数字
0
投稿

猜你喜欢

  • 手把手教你Python yLab的绘制折线图的画法

    2023-03-11 21:21:43
  • Go语言字符串基础示例详解

    2023-07-17 03:14:56
  • 基于Go语言实现分金币游戏

    2023-06-22 06:49:28
  • 注意:php5.4删除了session_unregister函数

    2023-11-24 12:31:54
  • asp如何同时处理数据库和页面错误?

    2010-06-07 20:58:00
  • 分析描述CentOS mysql安装系统

    2010-10-25 20:34:00
  • xmlhttp中运行getResponseHeader出错,提示:The requested header was not found

    2010-03-27 21:47:00
  • oracle常用sql语句

    2010-07-23 13:27:00
  • Python和Sublime整合过程图示

    2023-04-11 15:23:33
  • python包导入的两种方式

    2022-11-25 22:49:30
  • 通过不同的CSS设计字体大小来提高用户体验

    2008-12-10 19:17:00
  • typecho统计博客所有文章的字数实例详解

    2023-06-13 07:52:36
  • Microsoft Enterprise Library 5.0 如何集成MyS

    2011-03-16 15:19:00
  • PHP curl get post 请求的封装函数示例【get、post、put、delete等请求类型】

    2023-05-25 01:24:18
  • python实现加密的方式总结

    2023-08-28 05:36:58
  • SQL Server 安全检查列表全攻略

    2008-01-29 13:31:00
  • asp是的日期转换为星座的函数

    2011-02-26 11:11:00
  • 解决python3读取Python2存储的pickle文件问题

    2023-03-18 14:20:30
  • Opencv-Python图像透视变换cv2.warpPerspective的示例

    2023-06-27 19:03:18
  • Python实现曲线拟合的最小二乘法

    2022-03-24 16:13:25
  • asp之家 网络编程 m.aspxhome.com