草庐IT

java - java - 当没有接受long的方法时,为什么java将long参数提升为float/double?

这是SSCCE这演示了所描述的(恕我直言,奇怪的)行为:publicclassTest{publicstaticvoidprint(intparam){System.out.println("int");}publicstaticvoidprint(floatparam){System.out.println("float");}publicstaticvoidprint(Longparam){//为什么java会这样做? 最佳答案 JavaLanguageSpecification很清楚(强调我的):15.12.2Compile-

java - java - 当没有接受long的方法时,为什么java将long参数提升为float/double?

这是SSCCE这演示了所描述的(恕我直言,奇怪的)行为:publicclassTest{publicstaticvoidprint(intparam){System.out.println("int");}publicstaticvoidprint(floatparam){System.out.println("float");}publicstaticvoidprint(Longparam){//为什么java会这样做? 最佳答案 JavaLanguageSpecification很清楚(强调我的):15.12.2Compile-

java - 在 SLF4J 中格式化 float

我想用SLF4J格式化我的double和float。基本上,我在SLF4J中寻找Java的String.format("%.2f",floatValue)的等价物。阅读了SLF4J的文档并四处搜索后,我找不到它是否具有该功能的提示。我正在使用slf4j-api:1.7.6和slf4j-jdk14:1.7.6非常感谢任何帮助。 最佳答案 我假设您指的是SLF4J的扩展参数约定,例如:floatf;...logger.debug("Mynumberis{}",f);所以,答案是否定的。从SLF4J1.7.7开始,您要求做的事情是不可能的

java - 在 SLF4J 中格式化 float

我想用SLF4J格式化我的double和float。基本上,我在SLF4J中寻找Java的String.format("%.2f",floatValue)的等价物。阅读了SLF4J的文档并四处搜索后,我找不到它是否具有该功能的提示。我正在使用slf4j-api:1.7.6和slf4j-jdk14:1.7.6非常感谢任何帮助。 最佳答案 我假设您指的是SLF4J的扩展参数约定,例如:floatf;...logger.debug("Mynumberis{}",f);所以,答案是否定的。从SLF4J1.7.7开始,您要求做的事情是不可能的

java - 如何从 float[] 中获取 Stream

当我发现一些奇怪的东西时,我正在学习如何使用java8流。Arrays.stream()拥有除float组之外的所有方法:Arrays.stream(int[]):IntStreamArrays.stream(long[]):LongStreamArrays.stream(double[]):DoubleStream同样,有int、double等的Stream实现,但没有float:IntStreamLongStreamDoubleStream这是有原因的吗?使用float流的推荐方法是什么? 最佳答案 这是一种更好的方法,它不涉及

java - 如何从 float[] 中获取 Stream

当我发现一些奇怪的东西时,我正在学习如何使用java8流。Arrays.stream()拥有除float组之外的所有方法:Arrays.stream(int[]):IntStreamArrays.stream(long[]):LongStreamArrays.stream(double[]):DoubleStream同样,有int、double等的Stream实现,但没有float:IntStreamLongStreamDoubleStream这是有原因的吗?使用float流的推荐方法是什么? 最佳答案 这是一种更好的方法,它不涉及

java - 为什么 Java 隐式(没有强制转换)将 `long` 转换为 `float` ?

每当我认为自己理解了强制转换和转换时,我都会发现另一种奇怪的行为。longl=123456789L;floatf=l;System.out.println(f);//outputs1.23456792E8鉴于long比float具有更大的位深度,我预计需要显式转换才能编译。毫不奇怪,我们发现我们的结果失去了精度。为什么这里不需要类型转换? 最佳答案 long到double可以问同样的问题-两种转换都可能丢失信息。Section5.1.2oftheJavaLanguageSpecification说:Wideningprimitive

java - 为什么 Java 隐式(没有强制转换)将 `long` 转换为 `float` ?

每当我认为自己理解了强制转换和转换时,我都会发现另一种奇怪的行为。longl=123456789L;floatf=l;System.out.println(f);//outputs1.23456792E8鉴于long比float具有更大的位深度,我预计需要显式转换才能编译。毫不奇怪,我们发现我们的结果失去了精度。为什么这里不需要类型转换? 最佳答案 long到double可以问同样的问题-两种转换都可能丢失信息。Section5.1.2oftheJavaLanguageSpecification说:Wideningprimitive

java - 为什么将 float 除以整数返回 0.0?

因此,如果我有一个数字范围“0-1024”并且我想将它们带入“0-255”,那么数学将要求将输入除以输入的最大值(在这种情况下为1024)这会给我一个介于0.0-1.0之间的数字。然后将其乘以目标范围(255)。这是我想做的事!但由于某种原因在Java中(使用处理)它总是会返回一个值0。代码就这么简单floatscale;scale=(n/1024)*255;但我只得到0.0。我试过double和整数。一切都无济于事。为什么!? 最佳答案 因为你在做整数除法。除以double或float,它会起作用:doublescale=(n/1

java - 为什么将 float 除以整数返回 0.0?

因此,如果我有一个数字范围“0-1024”并且我想将它们带入“0-255”,那么数学将要求将输入除以输入的最大值(在这种情况下为1024)这会给我一个介于0.0-1.0之间的数字。然后将其乘以目标范围(255)。这是我想做的事!但由于某种原因在Java中(使用处理)它总是会返回一个值0。代码就这么简单floatscale;scale=(n/1024)*255;但我只得到0.0。我试过double和整数。一切都无济于事。为什么!? 最佳答案 因为你在做整数除法。除以double或float,它会起作用:doublescale=(n/1