首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,我怎样才能有一个有两个小数位的浮点型(作为一个浮点型)?

问在python中,我怎样才能有一个有两个小数位的浮点型(作为一个浮点型)?
EN

Stack Overflow用户
提问于 2020-01-02 22:08:00
回答 3查看 199关注 0票数 2

假设我有一个浮点数

代码语言:javascript
复制
x = 2.00

我想把它作为json发送。

代码语言:javascript
复制
message = { 'x': 2.00 } 

但当我这么做的时候

代码语言:javascript
复制
print(message)

我发现python把最后一位小数点漏掉了。如何将浮点数保持在小数点后两位?我知道2.00和2.0没有什么不同,但它要求我发送确切的数字(包括两位小数)(我已经尝试过decimal类,它的行为仍然是一样的,我需要将它作为一个浮点数而不是一个字符串发送)。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2020-01-02 22:22:06

你需要使用一个专门的库来序列化浮点数和保持精度。Protocol Buffers就是这样一个库(协议),您可以定义自己的JSON编码器类:https://developers.google.com/protocol-buffers/docs/proto3。

票数 0
EN

Stack Overflow用户

发布于 2020-01-02 22:51:08

您可以定义自己的JSON编码器类:

代码语言:javascript
复制
import json

message = {'x': 2.00}

class MyEncoder(json.JSONEncoder):
    def encode(self, obj):

        if isinstance(obj, dict):
            result = '{'
            for key, value in obj.items():
                if isinstance(value, float):
                    encoded_value = format(value, '.2f')
                else:
                    encoded_value = json.JSONEncoder.encode(self, value)

                result += f'"{key}": {encoded_value}, '

            result = result[:-2] + '}'
            return result
        return json.JSONEncoder.encode(self, obj)

print(json.dumps(message, cls=MyEncoder))

输出:

代码语言:javascript
复制
{"x": 2.00}
票数 0
EN

Stack Overflow用户

发布于 2020-01-02 22:42:01

下面是一个例子:

代码语言:javascript
复制
a=2.00
print ("{0:.2f}".format(a))
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59564724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档