floating-point-conversion
全部标签 我想用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开始,您要求做的事情是不可能的
我想用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开始,您要求做的事情是不可能的
当我发现一些奇怪的东西时,我正在学习如何使用java8流。Arrays.stream()拥有除float组之外的所有方法:Arrays.stream(int[]):IntStreamArrays.stream(long[]):LongStreamArrays.stream(double[]):DoubleStream同样,有int、double等的Stream实现,但没有float:IntStreamLongStreamDoubleStream这是有原因的吗?使用float流的推荐方法是什么? 最佳答案 这是一种更好的方法,它不涉及
当我发现一些奇怪的东西时,我正在学习如何使用java8流。Arrays.stream()拥有除float组之外的所有方法:Arrays.stream(int[]):IntStreamArrays.stream(long[]):LongStreamArrays.stream(double[]):DoubleStream同样,有int、double等的Stream实现,但没有float:IntStreamLongStreamDoubleStream这是有原因的吗?使用float流的推荐方法是什么? 最佳答案 这是一种更好的方法,它不涉及
每当我认为自己理解了强制转换和转换时,我都会发现另一种奇怪的行为。longl=123456789L;floatf=l;System.out.println(f);//outputs1.23456792E8鉴于long比float具有更大的位深度,我预计需要显式转换才能编译。毫不奇怪,我们发现我们的结果失去了精度。为什么这里不需要类型转换? 最佳答案 long到double可以问同样的问题-两种转换都可能丢失信息。Section5.1.2oftheJavaLanguageSpecification说:Wideningprimitive
每当我认为自己理解了强制转换和转换时,我都会发现另一种奇怪的行为。longl=123456789L;floatf=l;System.out.println(f);//outputs1.23456792E8鉴于long比float具有更大的位深度,我预计需要显式转换才能编译。毫不奇怪,我们发现我们的结果失去了精度。为什么这里不需要类型转换? 最佳答案 long到double可以问同样的问题-两种转换都可能丢失信息。Section5.1.2oftheJavaLanguageSpecification说:Wideningprimitive
因此,如果我有一个数字范围“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
因此,如果我有一个数字范围“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
我很好奇为什么float文字必须这样声明:floatf=0.1f;代替floatf=0.1;为什么默认类型是double,为什么编译器不能从赋值左侧推断它是float?谷歌只解释默认值是什么,而不是为什么会这样。 最佳答案 Whyisthedefaulttypeadouble?这是最好向Java语言的设计者提出的问题。他们是唯一知道做出该语言设计决定的真正原因的人。但我希望推理大致如下:他们需要区分这两种类型的文字,因为从数学的角度来看,它们实际上意味着不同的值。假设他们将“float”设为文字的默认值,请考虑这个示例//(Hypo
我很好奇为什么float文字必须这样声明:floatf=0.1f;代替floatf=0.1;为什么默认类型是double,为什么编译器不能从赋值左侧推断它是float?谷歌只解释默认值是什么,而不是为什么会这样。 最佳答案 Whyisthedefaulttypeadouble?这是最好向Java语言的设计者提出的问题。他们是唯一知道做出该语言设计决定的真正原因的人。但我希望推理大致如下:他们需要区分这两种类型的文字,因为从数学的角度来看,它们实际上意味着不同的值。假设他们将“float”设为文字的默认值,请考虑这个示例//(Hypo