Py学习  »  Python

在Python中,如何获得没有小数的整数?

keeponlearning101 • 3 年前 • 1482 次点击  
import math

a = math.sqrt(25)

print(a)

我的输出是5.0,我怎样才能得到5(整数)?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133343
 
1482 次点击  
文章 [ 3 ]  |  最新文章 3 年前
Thaago
Reply   •   1 楼
Thaago    3 年前

这在一定程度上取决于您想要的确切行为:是只打印不带小数的数字,还是将数字四舍五入为整数?

对于print语句,Python尝试将传递给它的任何内容转换为字符串以进行打印,默认情况下,它会给出小数点后的浮点数。为了避免这种情况,我们可以使用字符串格式:

print("{:.0f}".format(a))

这是做一个字符串(双引号“”)包含一个特殊的格式标记(大括号{})。格式标记内是所需行为的代码(浮点数的小数点后0位)。然后我们打电话给。格式化字符串的方法,并传递我们希望在特殊格式标记中使用的值(a)。

这看起来有点晦涩难看,但它是打印所需内容的最安全方法,因为它不会更改“a”,并且很容易根据其他打印行为进行自定义。


要对数字进行舍入并将其转换为整数,可以使用int()或round():两者都将接受一个浮点并输出一个干净打印的整数(并且是一个整数,用于将来的计算)。不要求被转换为整数,但这两个函数有不同的行为:int返回数字第一位的值,而round返回四舍五入的值(即round(1.9)->2.int(1.9)>1等)。

Cardstdani
Reply   •   2 楼
Cardstdani    3 年前

以简化的方式,您可以使用一个1行if运算符为结果指定一个整数值 sqrt 如果整数值和十进制数值相同:

import math

a = math.sqrt(25)
a = int(a) if int(a)==a else a

print(a)
Mad Physicist
Reply   •   3 楼
Mad Physicist    3 年前

必须检查并显式转换为整数:

if x == (y := int(x)):
    x = y

或者,如果没有赋值运算符:

if x == int(x):
    x = int(x)

从python 3.8开始,您可以使用 math.isqrt :

math.isqrt(25)

请记住,这将始终返回一个整数,即使输入不是完美的平方。