首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    代码写的烂,我被开除了!

    假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串。...因为每一种参数都有固定长度,未达到长度时需要做填充处理: 字符串类型的参数不满长度部分需要以下划线右填充,也就是字符串内容靠左; 数字类型的参数不满长度部分以 0 左填充,也就是实际数字靠右; 货币类型的表示需要把金额向下舍入...理论上,如果我们的核心翻译过程(也就是把注解和接口 API 序列化为请求需要的字符串的过程)没问题,只要注解和表格一致,API 请求的翻译就不会有任何问题。...第 12~38 行代码,实现了反射获取注解的值,然后根据 BankAPIField 拿到的参数类型,按照三种标准进行格式化,将所有参数的格式化逻辑集中在了这一处。...第 41~48 行代码,实现了参数加签和请求调用。

    20010

    3 个绝招 轻松解决 代码重复

    假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串。...因为每一种参数都有固定长度,未达到长度时需要做填充处理: 字符串类型的参数不满长度部分需要以下划线右填充,也就是字符串内容靠左; 数字类型的参数不满长度部分以 0 左填充,也就是实际数字靠右; 货币类型的表示需要把金额向下舍入...理论上,如果我们的核心翻译过程(也就是把注解和接口 API 序列化为请求需要的字符串的过程)没问题,只要注解和表格一致,API 请求的翻译就不会有任何问题。...第 12~38 行代码,实现了反射获取注解的值,然后根据 BankAPIField 拿到的参数类型,按照三种标准进行格式化,将所有参数的格式化逻辑集中在了这一处。...第 41~48 行代码,实现了参数加签和请求调用。

    31810

    干掉 “重复代码”,这三种方式绝了!

    假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串。...因为每一种参数都有固定长度,未达到长度时需要做填充处理: 字符串类型的参数不满长度部分需要以下划线右填充,也就是字符串内容靠左; 数字类型的参数不满长度部分以 0 左填充,也就是实际数字靠右; 货币类型的表示需要把金额向下舍入...理论上,如果我们的核心翻译过程(也就是把注解和接口 API 序列化为请求需要的字符串的过程)没问题,只要注解和表格一致,API 请求的翻译就不会有任何问题。...第 12~38 行代码,实现了反射获取注解的值,然后根据 BankAPIField 拿到的参数类型,按照三种标准进行格式化,将所有参数的格式化逻辑集中在了这一处。...第 41~48 行代码,实现了参数加签和请求调用。

    1.1K20

    不掌握这些坑,你敢用BigDecimal吗?

    BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。 其中涉及到参数类型为double的构造方法,会出现上述的问题,使用时需特别留意。...第四:三种字符串输出的坑 当使用BigDecimal之后,需要转换成String类型,你是如何操作的?直接toString?...这里我们需要了解BigDecimal转换字符串的三个方法 toPlainString():不使用任何科学计数法; toString():在必要的时候使用科学计数法; toEngineeringString...类似于科学计数法,只不过指数的幂都是3的倍数,这样方便工程上的应用,因为在很多单位转换的时候都是10^3; 三种方法展示结果示例如下: 基本结论:根据数据结果展示格式不同,采用不同的字符串输出方法,通常使用比较多的方法为...另外,NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。

    1.4K10

    Java核心库 最全最详细(完结)

    用来对超过16位有效位的数进行精确的运算 初始化: BigDecimal(int) 创建一个具有参数所指定整数值的对象 BigDecimal(double) 创建一个具有参数所指定双精度值的对象...BigDecimal(long) 创建一个具有参数所指定长整数值的对象 BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象 例如: BigDecimal...(BigDecimal) BigDecimal对象中的值相除,返回BigDecimal对象 toString() 将BigDecimal对象中的值转换成字符串 doubleValue()...将BigDecimal对象中的值转换成双精度数 floatValue() 将BigDecimal对象中的值转换成单精度数 longValue() 将BigDecimal对象中的值转换成长整数...set 设置年月日时分秒 get设置年月日时分秒 add 添加年月日 ?

    55330

    Java之BigDecimal详解

    BigDecimal(long) 创建一个具有参数所指定长整数值的对象 BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象 2.2、使用问题分析 使用示例:...对象中的值相除,返回BigDecimal对象 toString() 将BigDecimal对象中的值转换成字符串 doubleValue() 将BigDecimal对象中的值转换成双精度数 floatValue...格式化 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。...首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比...* 2.传入的参数等于0,则直接返回字符串"0.00" * 3.大于1的小数,直接格式化返回字符串 * @param obj传入的小数 * @return */

    94220

    使用 BigDecimal 的正确方式

    BigDecimal(long) 创建一个具有参数所指定长整数值的对象 BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象 2.2、使用问题分析 使用示例: BigDecimal...)」 BigDecimal对象中的值相除,返回BigDecimal对象 「toString()」 将BigDecimal对象中的值转换成字符串 「doubleValue()」 将BigDecimal对象中的值转换成双精度数...对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。...首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比...* 2.传入的参数等于0,则直接返回字符串"0.00" * 3.大于1的小数,直接格式化返回字符串 * @param obj传入的小数 * @return

    1.2K20

    Java中的 BigDecimal,80%的人都用错了....

    BigDecimal(double) 创建一个具有参数所指定双精度值的对象 BigDecimal(long) 创建一个具有参数所指定长整数值的对象 BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象...,返回BigDecimal对象 divide(BigDecimal) BigDecimal对象中的值相除,返回BigDecimal对象 toString() 将BigDecimal对象中的值转换成字符串...格式化 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。...首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比...* 2.传入的参数等于0,则直接返回字符串"0.00"      * 3.大于1的小数,直接格式化返回字符串      * @param obj传入的小数      * @return      */

    98520

    Elasticsearch问题汇总

    在一篇博文评论中解释如下: 应该是客户端代码里将查询的数值定义成了java.math.BigDecimal,而ES不支持这个类型。...解决方案一:转变成其他ES支持的数据类型 我使用的是6.5.4版本的Elasticsearch,该版本尚不支持BigDecimal或者BigInteger的数据类型,所以在index到Elasticsearch...之前,需要转换成其他数据类型,这里要注意不要数据溢出了: BigDecimal要转变成Double类型 BigInteger要转变成Long类型 解决方案二:使用更高版本的ES 我在看6.7.1版本的Elasticsearch...,后者是毫秒值格式。...这里由于搜索日期值使用的是2021-06-15 00:00:00这种格式,无法被es的日期解析器解析成上述的两种格式,因此抛出异常。

    1.7K20
    领券