我有一些浮点值,这些值都是动态生成的:
float_a = 12.200
float_b = 14.0
float_c = 14.01880
我想从中删除小数点。
预期结果
"12200"
"140"
"1401880"
我必须小心,因为这些不是定点值,我无法控制我的输入将达到多少小数位。评论中有更多例子:
预期结果:
答案 0 :(得分:3)
这个问题似乎是另一个已经回答的问题的排列:
前导零的概念是显示概念,而不是数字 一。您可以在数字上放置无数个前导零 没有改变它的价值。因为它不是数字概念,所以不是 与号码一起存储。
您必须在转换数字时决定所需的零数 到一个字符串。如果需要,您可以单独保留该号码。
消息来源:Python Force python to keep leading zeros of int variables
看起来你要问的唯一方法是你的初始“Float”是否为字符串形式,否则尾随0将被删除。如果您设法将“Float”作为字符串(在它成为Float之前),那么您可以使用上面提到的int('12.200'.replace('.', ''))
方法
答案 1 :(得分:2)
如果你开始使用字符串,我认为你是。我会使用类似的东西:
>>> int('12.200'.replace('.',''))
12200
它只删除.
并将结果字符串解析为int
。否则,只需先将str
投射到 protected void onActivityResult(int requestCode, int resultCode, Intent intentData) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, intentData);
if(requestCode == REQUEST_CODE && resultCode == RESULT_OK){
locationLat = intentData.getDoubleExtra("LocationLat", 0.0);
locationLng = intentData.getDoubleExtra("LocationLang", 0.0);
location = locationLat + " "+locationLng;
if(location != ""){
Toast.makeText(this, location, Toast.LENGTH_LONG).show();
if(lblName==null) {
lblName = new TextView(this);
lblName.setId(9);
lblName.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
LinearLayout ll = (LinearLayout) findViewById(R.id.llOne);
ll.addView(lblName, 5);
Button btnSetLoc = (Button) findViewById(R.id.getLoc);
btnSetLoc.setText("Change Location");
}
lblName.setText(location);
}
else{
Toast.makeText(this, "location is not set", Toast.LENGTH_LONG).show();
}
}
}
。
答案 2 :(得分:1)
这只是一个格式化问题。其中任何一个都可以获得尾随零:
>>> '{:.3f}'.format(1.2)
'1.200'
>>> '%0.3f' % (1.2,)
'1.200'
然后:
>>> '{:.3f}'.format(12.2).replace('.','')
'12200'
要从示例中获得所需内容:
vals=(1.10, 1.110, 2.0, 2.134)
def wid(f):
w=1
while True:
s='{:.{w}f}'.format(f, w=w)
if s[-1]=='0' or w>5:
break
w+=1
return w
for e in vals:
s='{:.{w}f}'.format(e, w=wid(e)).replace('.','')
print '{:10} => {}'.format(e, s)
打印:
1.1 => 110
1.11 => 1110
2.0 => 20
2.134 => 21340
答案 3 :(得分:0)
如果要删除小数,为什么不乘以1000
?
float_a = 12.200
print str(int(float_a*1000))
当你有
时float_a = 1.110
float_b = 1.1100
float_c = 1.11000
Python正在丢弃尾随零,而上述3则完全相同。这些尾随零是非有效数字,因此如果您想要实际保留它们,原始数据类型将需要是一个字符串。
如果您进行了更改,那么操作很简单
float_a = "1.110"
print float_a.replace('.', '') # "1110"
答案 4 :(得分:0)
如果您要询问如何将float_a = 12.200
转换为字符串" 12200",只需将其乘以1000
,然后再将其转换为字符串,例如:< / p>
print(str(float_a * 1000))
但是,如果数字包含超过4个小数位,您仍然会有小数。
但是,由于您正在谈论它并且总是删除0&#34;,我怀疑您可能错过了预期输出中的.
。在这种情况下,要显示具有固定小数位数的float
,只需使用Python的内置字符串格式:
float_a = 12.200
expected_result = '%.2f' % float_a
print expected_result
> 12.20
如果这没有意义,请稍微澄清一下你的问题,我就会编辑! :)
修改强>
在您进一步澄清问题后,似乎您希望定义带有尾随零的float
并保留它们,并将float
转换为保留前导零的字符串。如果您的输入类型为float
,我担心这是不可能的,因为float
不会保留这些尾随的零开头:
在[1]中:float_a = 3.1400
在[2]中:float_a 出[2]:3.14
这是一个&#34;限制&#34;数据类型,你无能为力。你想要一个定点类型或something to handle "decimal numbers",而不是浮点数。