keddad Asked:2020-06-06 01:03:50 +0000 UTC2020-06-06 01:03:50 +0000 UTC 2020-06-06 01:03:50 +0000 UTC 计算点后的数字 772 计算数字后的数字的实现选项是什么.? 例如,输入1.89结果8。 python 3 个回答 Voted Best Answer Qwertiy 2020-06-06T04:04:36Z2020-06-06T04:04:36Z 像这样的东西:http: //ideone.com/SMFYJc x = 1.89 print(int(x % 1 * 10)) 只是不要忘记错误。可能值得添加一些东西(取决于数字的范围)以获得正确的结果。 如果数字可以为负数,则使用:http abs: //ideone.com/Zuzvb2 x = -1.89 print(int(abs(x) % 1 * 10)) m9_psy 2020-06-07T02:06:12Z2020-06-07T02:06:12Z 代替自行车或魔术(即使乍一看它们似乎有效),有一个适用于许多语言的标准modf函数,它将数字分为整数和小数部分。 import math print(math.modf(3.1415)) print(math.modf(-3.0009)) print(math.modf(7)) >>> (0.14150000000000018, 3.0) >>> (-0.0009000000000001229, -3.0) >>> (0.0, 7.0) 以后小数部分怎么办,要看具体的任务。如果您需要四舍五入到 1 位有效数字。如果你只得到第一个数字 - int(f * 10)-print(int(0.14150000000000018 * 10)) 无论您选择哪种方法获取小数部分,您都可能会遇到舍入错误,因此您可能无法准确获得预期的结果: numb = 3.3 frac, integral = math.modf(numb) print(frac) print(frac * 10) >>> 0.2999999999999998 >>> 2.9999999999999982 摆脱这种情况的一种方法可能是decimal模块: from decimal import Decimal numb = 3.3 decim = Decimal(str(numb)) print(decim - decim.to_integral_exact()) >>> 0.3 您还可以四舍五入到所需的数字: numb = 3.3 frac, integral = math.modf(numb) print(round(frac, 1)) >>> 0.3 Andrio Skur 2020-06-07T02:11:38Z2020-06-07T02:11:38Z 据我了解这个问题: num = 1.89 mant = str(float(num)) mant = int(mant[mant.find('.')+1:]) print(mant) #print 89
像这样的东西:http: //ideone.com/SMFYJc
只是不要忘记错误。可能值得添加一些东西(取决于数字的范围)以获得正确的结果。
如果数字可以为负数,则使用:http
abs
: //ideone.com/Zuzvb2代替自行车或魔术(即使乍一看它们似乎有效),有一个适用于许多语言的标准modf函数,它将数字分为整数和小数部分。
以后小数部分怎么办,要看具体的任务。如果您需要四舍五入到 1 位有效数字。如果你只得到第一个数字 -
int(f * 10)
-print(int(0.14150000000000018 * 10))
无论您选择哪种方法获取小数部分,您都可能会遇到舍入错误,因此您可能无法准确获得预期的结果:
摆脱这种情况的一种方法可能是decimal模块:
您还可以四舍五入到所需的数字:
据我了解这个问题: