springmvc中@PathVariable传Double精度丢失

页面请求

http://localhost:8080/test/3.201

后端接受数据

/**
     * 测试
     *
     * @param number
     */
    @RequestMapping(value = "/test/{number}", method = RequestMethod.GET)
    public void test(@PathVariable Double number) {
        System.out.println("数字:" + number);
    }

结果

数字:3.0

改为下面的方式就可以

/**
     * 测试
     *
     * @param number
     */
    @RequestMapping(value = "/test/{number:.+}", method = RequestMethod.GET)
    //或者@RequestMapping(value = "/test/{number:.*}", method = RequestMethod.GET)
    public void test(@PathVariable Double number) {
        System.out.println("数字:" + number);
    }

建议传递带小数类型,最好用实体类接受,属性放在实体类中,用 BigDecimal 类型,数字更精确

时间: 2024-10-12 17:24:40

springmvc中@PathVariable传Double精度丢失的相关文章

【转】JAVA程序中Float和Double精度丢失问题

原文网址:http://blog.sina.com.cn/s/blog_827d041701017ctm.html 问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用.为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果

springmvc @PathVariable("b") double b 丢失精度问题

Spring MVC从3.0开始支持REST,而主要就是通过@PathVariable来处理请求参数和路径的映射.由于考虑到SEO的缘故,很多人喜欢把新闻的名称作为路径中的一部分去处理,这时候中文的名称就会遇到问题,没办法映射,这个是因为编码问题,只要到TOMCAT/conf下找到server.xml,添加URIEncoding="UTF-8"进行URL编码设置就可以解决中文问题.另外经常遇到路径中有点".",而点是特殊字符,比如.html, .do等等,所以Spr

springmvc中@PathVariable和@RequestParam的区别

http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://localhost:8080/Springmvc/user/page.do 这个就是路径,是你的请求url,而如果这个路径上有数据匹配,用的就是@PathVariable  如 @RequestMapping(value="/page{pageNo}.do") public String pa

java中两double相加精度丢失问题及解决方法

在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void testBig(){ System.out.println(0.11+2001299.32); } 控制台输出2001299.4300000002 我们吃惊的发现,结果并不是我们预想的那样,这是为什么呢?又如何解决呢? 现贴出BigDecimal的一个构造函数的文档供大家参考 BigDecimal pu

iOS - Json解析精度丢失处理(NSString, Double, Float)

开发中处理处理价格金额问题, 后台经常返回float类型, 打印或转成NSString都会有精度丢失问题, 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题:经过测试其实系统NSDecimalNumber是对有问题值做了四舍五入处理 ?    还有经过测试, 重要的事说三遍:?处理精度有关的数据请用double?处理精度有关的数据请用double?处理精度有关的数据请用double     float testDouble = [jsonDict[@"Body"]

关于JavaScript中计算精度丢失的问题

摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失. 为了避免产生精度差异,把需要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,等计算完毕再降级(除以10的n次幂),这是大部分编程语言处理精度差异的通用方法. 关键词: 计算精度 四舍五入 四则运算 精度丢失 1. 疑惑 我们知道,几乎每种编程语言都提供了适合货币计算的类.例如C#提供了decimal,Java提供了BigDecim

float及double类型减法运算时精度丢失问题

当float和double类型在进行减法运算时,会出现精度丢失问题,这种问题主要是由于计算机中普遍使用2进制所造成的.在此做为记录,防止日后遗忘.     public static void main(String[] args) {         float a = 2.1f;         float b = 2.0f;         float c = a - b;         System.out.println("a-b=" + c);     }     //输

float,double等精度丢失问题 float,double内存表示

问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 为何浮点数可能丢失精度浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用. 为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果. 导致此行为的原因是下面之一: 十进制数的二进制表示形式可能不精确. 使用的数字之间类型不匹配(例如,混合使用浮

double发生精度丢失的解决办法

发生精度丢失的原因: 个人理解:机器在运行时,使用2进制形式的计数方式,而我们日常生活中的计算是10进制的,对于整数的加减乘除,double还能适用,但是对于有小数的,则容易发生精度丢失,即用2进制表示10进制小数时,部分小数只是近似的表示,2进制表示不完全准确,此时,只能用BigDecimal来进行精确的精度计算. double  d1=5.0; double d2=4.9; BigDeciaml b1=new BigDeciaml(d1); BigDecimal b2=new BigDeci