如何在Python中保留小数?

Python042

如何在Python中保留小数?,第1张

f = lambda x, n: round(x, n - len(str(int(x))))

定义了一个方法f,用来实现你所说的功能。

输入:

f(123.456789, 8)

输出:

123.45678

输入:

f(1.23456789, 8)

输出:

1.2345679000000001

f接收2个参数,第一个参数是要求有效位数的数字,第二个参数是设置有效位数。第二次输出中的数字不够准确,这跟python处理小数的方式有关,如果想要准确的数字可以使用python decimal类。或者用python3k

扩展资料

#include <stdio.h>

#define C "C Programming"

int main(void)

{

int a=12345

float b=5.12345678

char e,d,f

scanf("%c %c %c",&e,&d,&f)

printf("int is:%d\n",a)

printf("float is:%f\n",b)

printf("char is:%s\n",C) 

return 0

}

1,对于浮点数

a=1.36852

a=round(a,2)

print a

#结果1.36

2,对于整数

from decimal import Decimal

a=1

a=Decimal(a).quantize(Decimal('0.00'))

print a

#结果1.00

3,通用方法

a=1

a=("%.2f" % a)

print a

#结果1.00

参考资料:百度百科 Python

百度百科 printf

1、使用字符串格式化

大部分语言都可以使用字符串格式化的方法来实现保留两位小数的效果,python也不例外:

a = 12.345

print("%.2f" % a) # %代表格式化输出,.2代表小数点后保留两位,f代表数据类型是浮点型

2、使用round内置函数

python内置了一个名为round的函数,这个函数可以用来对数据进行格式化。代码如下:

a = 12.345

a1 = round(a, 2) #将a通过round函数处理后赋值给a1.传入的2代表保留两位小数

print(a1)

3、使用decimal模块

类似于java,python也专门提供了一个decimal模块用于精确运算,它也可以进行数据的格式化输出。代码如下:

from decimal import Decimal

a = 12.345

Decimal(a).quantize(Decimal("0.00")) # 使用默认的进位方式(同round)“0.00”表示保留小数点后两位

以上就是常规的保留两位小数的方法,接下来介绍两种非常规的方法(使用字符串处理的方法,这种方法仅保留两位小数,不做四舍五入)

4、使用序列切片

原理很简单,只要找到小数点,然后进行切片即可。代码如下:

a = 12.345

str(a).split('.')[0] + '.' + str(a).split('.')[1][:2]

#使用序列切片的方式,切出小数点前的数据,还有小数点后两位的数据,然后进行拼装

5、使用re模块

类似于切片,不过这次使用正则匹配来定位小数点位置。

import re

a = 12.345

re.findall(r"\d{1.}?\.\d{2}", str(a))

#使用正则匹配,将符合规则(一个小数点前有很多位数字,小数点后面只有两位数字的片段)字符串片段取出