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