HTTP GET 请求如何传输浮点数?

问题描述 投票:0回答:2

你能帮我解决我的问题吗?我在 Java Spring Boot 上有一个后端,我需要使用

GET
请求来传输例如“2300,55”。据我了解,
GET
只能传输字符串和长数字,这还没有问题,但我需要用逗号或点传输数字。如何做到这一点?

我尝试解析它,获取字符串并在 try/catch 块中解析:

...
    @PathVariable("weight") String weight
    try {
        float parsedWeight = Float.parseFloat(weight);
    } catch (NumberFormatException e) {
...

并且被抓住了

java.lang.NumberFormatException:对于输入字符串:“2300,55”

但是如果我用点而不是逗号“2300.55”尝试它,它会保存到数据库中,但它变成了“2300”。数据库 PostgreSQL,列类型为

REAL
-> 即
float4
(单精度浮点数(4 字节))

java spring string get floating-point
2个回答
0
投票

并捕获 java.lang.NumberFormatException: 对于输入字符串:“2300,55”

使用小数逗号而不是点等问题与本地化有关。如果远程发送类似

2300,55
的数字,则意味着它以本地化形式发送数字。一般来说,这在网络交互中被视为“极其糟糕”:所有数据都应以唯一定义的与区域设置无关的形式在程序之间发送。本地化形式只能在与人类交互时使用。因此,建议的方法是修复远程端,使其仅发送中性表示。 但是,如果您对远程端没有影响并且必须处理损坏的表单,请尝试单独设置预期区域设置或

LocalDecimalSeparator

的 Java Scanner 类方法。对于小数逗号,这可能是某些欧洲语言环境。

(我无法回答数据库问题。但是,语言环境问题应该具有相同的主要形式。)


0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.