【问题标题】:Casting double (primitive) to Long ( Wrapper )将 double(原始)转换为 Long( Wrapper )
【发布时间】:2014-02-02 00:24:48
【问题描述】:

我必须在我的代码中的多个位置将原始双精度转换为 Long(包装器)。这是我可以使用的两种方式 -

linkcatch.setCode(Long.valueOf((long) relatedCd.getDouble(value)));

(将原始双精度转换为原始长,然后将包装器长)

linkcatch.setCode(Long.valueOf(String.valueOf(relatedCd.getDouble(value))));

( 将 double 转换为 String 到 Wrapper Long )

有没有什么方法可以在不进行中间转换的情况下从原生 double 转换为 Wrapper long。

我很担心,因为有很多地方我需要这样做。谢谢。

【问题讨论】:

  • 您使用的是原生的,但我认为您的意思是原始的?这不是原生的意思。
  • 只做原始转换。你认为包装类到底在包装什么?一个原始的长。您无法摆脱这种转换。

标签: java casting


【解决方案1】:

您可以创建将双精度值作为参数的静态方法,而不是在每个 java 语句中进行转换,进行转换并返回一个 Long 对象。这样一来,代码的易维护性和可重用性,没有冗余

【讨论】:

    【解决方案2】:

    只需强制转换,java 自动装箱就会为您转换为 Long 对象类型。无需制作特殊的库或额外的方法(保持精简!)

    linkcatch.setCode((long)relatedCd.getDouble(value));
    

    注意事项:

    • 您可能想要舍入而不是仅仅铸造。 (double to long conversion)
    • 我看到您有一个“realtedCd”对象,这意味着您可能正在处理金钱或算术运算。如果是这样,我建议使用 BigDecimal 而不是双精度数 Double vs. BigDecimal?

    【讨论】:

      【解决方案3】:

      你可以这样做:

      Long l = new Double(relatedCd.getDouble(value)).longValue();
      

      Java 自动装箱将帮助您做其他事情。

      【讨论】:

        【解决方案4】:

        找到了一种更短的方法来制作它。您可以使用 Math.Round 来获取 long 本机值。之后,您可以简单地将其转换为 long

        double a = -5.42
        Long = (Long)Math.round(a);
        

        但是另一种方法也可以做一些事情,比如让另一个班级为你做这项工作。

        public class Util{
        
            public static Long getLong(double a){
                 return (Long)Math.round(a);
            }
        }
        

        这样你的代码看起来像这样

        linkcatch.setCode(Util.getLong(value));
        

        而不是

        linkcatch.setCode(Long.valueOf((long) relatedCd.getDouble(value)));
        

        linkcatch.setCode(Long.valueOf(String.valueOf(relatedCd.getDouble(value))));
        

        希望它可以帮助您使您的代码更简洁、更易于管理。此外,如果您希望将所有 Long 值向上或向下舍入,则可以在一个位置进行编辑(Util 类),而不是 100 个不同的位置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-23
          • 2021-12-03
          • 2013-01-20
          • 1970-01-01
          • 1970-01-01
          • 2013-11-23
          • 2014-09-30
          • 2019-05-20
          相关资源
          最近更新 更多