可以说我有一些值:.008,.08,.8,8,80,800.我需要一个函数,我可以输入这些值并返回.001, 0.01,0.1,1,10,100等...需要一个函数来确定一个值的比例
例如:
def func(v):
a = do something using v.....
return a
func(.009) = .001
func(.06) = .01
func(1234) = 1000
可以说我有一些值:.008,.08,.8,8,80,800.我需要一个函数,我可以输入这些值并返回.001, 0.01,0.1,1,10,100等...需要一个函数来确定一个值的比例
例如:
def func(v):
a = do something using v.....
return a
func(.009) = .001
func(.06) = .01
func(1234) = 1000
>>> import math
>>> 10**math.floor(math.log10(.009))
0.001
>>> 10**math.floor(math.log10(.06))
0.01
>>> 10**math.floor(math.log10(1234))
1000.0
>>>
from math import log, floor
def func(v):
a = floor(log(v, 10))
return 10**a
我不会写功能为你,因为这很可能是你应该做自己,但根据伪代码,请做这样的事情:
def func(v):
new str;
length = len(v) - 1
if v[0] == '.':
str = '.'
for x in range (0, length):
if x == length - 1:
str = str + '1'
else:
str = str + '0'
else:
str = '1';
for x in range (0, length):
str = str + '0'
return str.toInteger()
基本上你会找到数字的长度并将其减1。原因是因为你知道结果的第一个字符是什么。它是一个十进制或1。我们检查字符串的第一个元素(如果它的数字,将其转换为字符串)。如果第一个元素是一个十进制数,那么结果将是一个小数,然后使用数字-1的长度(也就是没有小数的数字的长度)来计算多少个0和1来串联到字符串。如果输入不是十进制数,那么你只需要str ='1'。然后根据其长度加1(即减去0)。
现在我不确定这种情况是否会出现,但如果您的电话号码是20.25,那么除了第一个字符是数字而不是小数点之外,它是相同的,您需要检查如果字符串的其余部分是小数。
你会注意到我在我的回复中说了很多字符串,因为如果它是一个字符串它更容易。如果它的数字,将其转换为字符串,因为它更容易操作。
你应该使用'math.log10' – jamylak 2013-04-04 03:08:03