Java 由于HTTP GET请求,如何传输浮点数?
你能帮我解决这个问题吗?我在Java Spring Boot上有一个后端,我需要使用Java 由于HTTP GET请求,如何传输浮点数?,java,spring,string,get,floating-point,Java,Spring,String,Get,Floating Point,你能帮我解决这个问题吗?我在Java Spring Boot上有一个后端,我需要使用GETrequest进行传输,例如“2300,55”。据我所知,GET只能传输字符串和长数字,而这些都没有问题,但我需要用逗号或点来传输数字。如何做到这一点 我试图解析它,在try/catch块中获取字符串并进行解析: ... @PathVariable("weight") String weight try { float parsedWeight = Float.parseFl
GET
request进行传输,例如“2300,55”。据我所知,GET
只能传输字符串和长数字,而这些都没有问题,但我需要用逗号或点来传输数字。如何做到这一点
我试图解析它,在try/catch块中获取字符串并进行解析:
...
@PathVariable("weight") String weight
try {
float parsedWeight = Float.parseFloat(weight);
} catch (NumberFormatException e) {
...
抓住
java.lang.NumberFormatException:用于输入字符串:“2300,55”
但如果我用point代替逗号“2300.55”,它会被保存到数据库中,但会变成“2300”。数据库PostgreSQL和列类型为REAL
->,即float4
(一个单精度浮点数(4字节))
捕获的java.lang.NumberFormatException:用于输入字符串:“2300,55”
像使用小数点逗号而不是小数点这样的问题与。如果remote发送的数字像2300,55
,这意味着它以本地化形式发送数字。通常,这在网络交互中被视为极为糟糕:所有数据都应以与现场无关的形式在程序之间发送。本地化形式只能用于与人的交互。因此,建议的方法是修复只发送中性表示的远程端
但是,如果您对远程端没有影响,并且必须处理损坏的表单,请尝试使用Java类方法分别设置预期的区域设置或LocalDecimalSeparator
。对于十进制逗号,这可能是某个欧洲语言环境
(我无法回答DB问题。)(我没有足够的声誉发表评论)在解析之前,您只需将字符串中的“.”替换为“.”。
对于您来说,第二个问题real足够大,可以容纳java float,所以问题可能在于持久化您的实体是什么样子的?我认为您正在使用int/long