我要处理一些数据 0.999820,都是这种保留了 6 位小数的 str 类型字段 ,怎么转换成 int 啊,一转换就报错 我最终要拿他作减法运算,转成 float 直接变成 1.0 了,不是我想要的结果,我要保证他还是原来的精度 6 位小数,只不过要转换成 int 类型
ValueError: invalid literal for int() with base 10: '0.999820'
我要处理一些数据 0.999820,都是这种保留了 6 位小数的 str 类型字段 ,怎么转换成 int 啊,一转换就报错 我最终要拿他作减法运算,转成 float 直接变成 1.0 了,不是我想要的结果,我要保证他还是原来的精度 6 位小数,只不过要转换成 int 类型
ValueError: invalid literal for int() with base 10: '0.999820'
1
holajamc Apr 13, 2018
decimal 了解一下
以及『我要保证他还是原来的精度 6 位小数,只不过要转换成 int 类型』小数和 int 类型同时出现,一定要这么秀嘛… |
2
winterli Apr 13, 2018
如何用 int 来表示带小数的。。。
不如你换个问题 为啥用 int 来表示带小数的。。。 难道计算那边你不能把别的换成 float 算么。 |
3
AlisaDestiny Apr 13, 2018 0.999820 - X = (0.999820 - X ) * 1000000 / 1000000 = (999820 - X * 1000000) / 1000000 .
|
4
lmqdlr Apr 13, 2018 忽略你描述中存在的问题,我想你大概是想用 int 计算又要求结果保留 6 位小数,那么可以把字符串转成 float,然后把参与运算的数字先乘以 1000000,运算完再除回来
|
5
BearD01001 Apr 13, 2018 楼上正解。乘以 1000000 后进行运算,输出结果钱除以 1000000
|
6
BearD01001 Apr 13, 2018
@BearD01001 #5 钱 > 前
|
7
noming Apr 13, 2018
放大-->运算-->还原,有些数字电路里计数浮点数就是这么处理的
|
8
xuc Apr 13, 2018
楼主说的不明不白的
首先'0.999820'转 float 怎么可能直接变成 1.0 了 >>> float('0.999820') 0.99982 另外你要解决的问题我估计 1~3 楼说的方法可以解决 |
9
hsuan Apr 13, 2018
int,全称是 integer,我觉得楼主缺少一本英汉字典。
|
11
tailf Apr 13, 2018
楼主去学习一下什么是 int ......
|
13
SeanZhaoOrZXY Apr 13, 2018
@wsds 他是想说,你可能没搞懂 int 代表什么,否则不会提出这样的转换要求。。
|
14
est Apr 13, 2018
严格按照 LZ 的 narrative 来做这个问题「保留了 6 位小数的 str 类型字段」
应该是先在字符串里把小数点向右移动 6 位,再做 int,计算完毕之后再除以 1e6 |
15
xpresslink Apr 13, 2018 会问这个问题的基本上是非常小白,你们竟然想扯清清楚楚的?
|
16
yogogo Apr 13, 2018
LZ 应该是说转为数值类型的吧~
|
17
U7Q5tLAex2FI0o0g Apr 13, 2018
又是 int 又是 6 位小数?逗我呢
|
18
projectzoo Apr 13, 2018
@xpresslink #15 说得有道理。
|
19
tomczhen Apr 13, 2018 via Android 典型的 xy 问题,别浪费时间了。
|
20
Zzde Apr 13, 2018 via iPhone
保持原来精度 6 位小数,还要是 int 型....天秀
|
21
vipppppp Apr 13, 2018 我还以为只有客户会提出这样的要求
|
22
cstj0505 Apr 13, 2018
我以为我学了假的 int
|
23
ctro15547 Apr 13, 2018
float 类型,了解一下?
|
24
ques Apr 13, 2018 指出问题所在就可以了么 为啥 v2 一群人冷嘲热讽的 怎么这种风气?
|
25
qymobile Apr 13, 2018
其实好多帖子都可以回复一个古老的 关于 烧饼的短语
|
26
mcluyu Apr 13, 2018
这个问题刷新了我对这个论坛的看法,我暂且认为是楼主没有描述清楚或者我理解错误了吧。一开始我还以为要说的是二进制在表示小数时的精度问题,原来并不是。。。。
|
27
dingtian Apr 13, 2018
。。。哈哈哈 不看你的题目,只看你的问题。。对你需要操作的两个数 成个十万一百万什么的,最后结果再除回来。。。精度保留了
|
29
locktionc Apr 13, 2018
这个楼主想要的是 float 型的浮点数,而不是字符串型的浮点数。
|
30
raincoat Apr 13, 2018
前排的回答都很靠谱了~~
|
31
UnknownR Apr 13, 2018
|
32
dog82 Apr 13, 2018
感觉我精神分裂了
|
33
pmispig Apr 13, 2018
你到底知不知道什么是 int????
|
34
wingkou Apr 13, 2018 via Android
看到这么多人骂楼主我就放心了...
|
35
realpg PRO 看到这么多人骂楼主我就放心了...
|
36
lovesky Apr 14, 2018 via Android
看到这么多人骂楼主我就放心了...
|
38
bombless Apr 14, 2018 via Android
我估计是领导要求用 int 算,然后 po 主就懵了。就像楼上说的先乘以 1e6 然后 round 进行计算,结果再除回 1e6 就可以了
|