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

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

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
  <property name="interceptors" ref="localeChangeInterceptor"/>
  <property name="useDefaultSuffixPattern" value="false" /> 
 </bean>

另外,这时候如果只设置这个,请求可以传递到对于的controller,但传过去的数据会有问题,只会传最后一个点前面的数据,除非你在最后加上“/”,比如/news/测试.点/  这样就会把“测试.点”当作整体,不然只会得到“测试”。这时候我们可以这样设置@RequestMapping("/news/{title:.*}")
这样就一切ok啦。

时间: 2024-11-07 00:08:36

springmvc @PathVariable("b") double b 丢失精度问题的相关文章

java double 计算损失精度

计算double类型的数时有时候会多出0.000000001,会有不确定个数的0,在计算时将其转为BigDecimal就不会出错. BigDecimal sum = new BigDecimal(0.0);                BigDecimal tmp = new BigDecimal(0.0);                for(int i=0; i<list.size(); i++){                    tmp = new BigDecimal(list

【转】为何浮点数可能丢失精度

转自铅笔 为何浮点数可能丢失精度?浮点十进制值通常没有完全相同的二进制表示形式. 这是 CPU 所采用的浮点数据表示形式的副作用.为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果. 导致此行为的原因是下面之一:1.十进制数的二进制表示形式可能不精确.2.使用的数字之间类型不匹配(例如,混合使用浮点型和双精度型). 为解决此行为,大多数程序员或是确保值比需要的大或者小,或是获取并使用可以维护精度的二进制编码的十进制 (BCD) 库. 详细剖析:浮点型运算为什么会造成精度丢失?1.

java float浮点型数据存储,丢失精度问题

java中float类型为4字节32位,内存中的存储遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e底数m部分:使用二进制数来表示此浮点数的实际值.指数e部分:占用8bit(1个字节)的二进制数,可表示数值范围为0-255.但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数.所以,float类型的指数可从-126到128.底数部分实际是占用24bit(3个字节)的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit. 所以一

double,失去精度

double,失去精度: amount.doubleValue() * 100 原文地址:https://www.cnblogs.com/xiluhua/p/8727921.html

double类型的精度问题

https://www.nowcoder.com/acm/contest/127/E 一道很简单的期望题,已知概率p求期望 显然期望为1/p 但在精度处理上就有点麻烦了,题目要求答案以最简分数的形式输出,误差要小于1e-6 但我一开始错误的使用了除法运算求1/p,再求(1/p*1e6)/1e6的最简分数 很显然精度丢失 这是一条大忌,在高精度问题中一定要避免使用除法 所以正解是求1e6/(p*1e6)的最简分数 但这里又有一个精度问题,我们算式里的p,是对题目给出数据q,求p=1.0-q得到的

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); } 结果 数

Java double和 float丢失精度问题

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt357 由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double d2 = 20014999; Syst

[坑]c#中double转字符串精度丢失问题记录

在项目遇到了一个比较大的double值,然后出现了一些意想不到的状况: double b=1141.161994934082; b.ToString();//'1141.16199493408' 然后发现最后的一个2被丢弃了,最后经过测试这个跟double的数字位数有关,如果超过16位,最后一位就会被丢弃,也就是说2是第17位,所以被丢弃了,找了很多的办法都没有解决这个问题,所以记录一下. 在sql server 2014存进去这个数字的时候,是没有问题的,但是从查询管理器看到的数字也是少了一个

double float的精度问题

三部曲 1: #include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main() { double a=0.0001; float b=0.1; int c=(int)(a*1000)/b; cout<<c<<endl; } ///期望c==1 结果c却==0 2: #include <iostream> #include