繁体   English   中英

将double(原始)转换为Long(包装器)

[英]Casting double (primitive) to Long ( Wrapper )

我必须在代码中的多个位置将原始双精度类型转换为Long(Wrapper)。 这是我可以使用的2种方法-

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

(将原始double转换为long,然后包装长)

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

(将Double转换为String到Wrapper Long)

有没有任何方法可以将本机double长时间转换为Wrapper,而无需进行中间转换。

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

您可以创建一个以双精度值作为参数的静态方法,而不是在每个java语句中进行强制转换,然后进行强制转换并返回Long对象。 这样,易于维护,代码的可重复使用性而无需冗余

只是强制转换和Java自动装箱会为您转换为Long对象类型。 无需制作特殊的库或其他方法(保持精简!)

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

笔记:

  • 您可能需要舍入而不是仅投射。 双倍到长转换
  • 我看到您有一个“ realtedCd”对象,这意味着您可能正在处理货币或算术运算。 如果是这样,我建议使用BigDecimal而不是double来实现Double和BigDecimal的精度

找到了一种更短的方法。 您可以使用Math.Round来获取长本机值。 之后,您只需将其转换为长

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))));

希望它可以帮助您使代码更整洁,更易于管理。 另外,如果希望所有“长整数”值都向上或向下取整,则可以在单个位置(Util类)进行编辑,而不是100个不同的值。

您可以这样:

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

Java自动装箱将帮助您执行其他操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM