前后端联合开发的纠结点,需要共同讨论并确定:
- 接口名称与风格
- 如果空集合,返回null还是空集合
- json组装格式
- 后台异常的失败提示
- 错误信息与用户信息透出
前后端交互的API,需要明确协议、域名、路径、请求方法、请求内容、状态码、响应体
JAVA与JS对数字类型变量处理方式不同,如果数字太大或者有精度要求,最好使用String类型
(“有些数值会有精度损失”——2的56次方能够精确表示。)
聊聊浮点数
float a = 0.5F - 0.25F;
float b = 0.25F - 0.0F;
结果:a = b
float c = 1.0F - 0.9F;
float d = 0.9F - 0.8F;
结果:c != d
问题:为什么会出现这种情况?
答案:0.5F = 2^(-1) ,0.25F = 2^(-2)
因此a由这两个值相减是一个准确值。
而1.0F、0.9F等无法由2的指数倍表示,用浮点数计算出来是无限循环小数。
因此c与d的结果不是准确值。
为什么要有科学记数法?表示极大数、极小数
浮点数的表示范围:
- Float:比特数为32,有效数字为7位(十进制),数值范围位-3.4E+38和3.4E+38
- Double:比特数位64,有效数字位16(十进制),数值范围位-1.7E-308和1.7E+308
指数是以2为底的,有效数字前面省略了1(这叫规格化,规格化浮点数的尾数域最左位即最高有效位总是1,故这一位经常不予存储,而认为隐藏在小数点的左边),所以绿色和黄色之间还省略了1,实际上有效数字有24位。
转换例子:
1.
2.三进制的0.1,转换成十进制:0.333333333(即1/3)
JS没有整形,只有Double浮点数,而Double只有16位有效数字(十进制),所以如果后端传给前端的值超过16位有效数字,该值就会被截断
对于Long类型,有64位,因此传递给前端必须转换成科学计数法
JS最大能够精确表示的整型值:2的53次方
即双精度浮点数二进制所有有效数字是52+1=53位



