java - Kotlin float -> 字符串转换问题(也是 Java)

标签 java kotlin floating-point

    @Test
    fun float_test() {
        val float = 1.123451234512345F

        val expected = "1.123451234512345"
        val actual   = float.toString() //actual comes 1.1234512

        assertThat(actual).isEqualTo(expected) //failed
    }

当我将 float 1.123451234512345F 转换为 String 时,结果只有 1.1234512

这有什么原因吗?..

最佳答案

Is there any reason of this ?



您的文字 1.123451234512345有 15 个十进制数字的 precision1。

一个 float只能表示 6 到 7 位精度。当数字转换为 float 时,更多的数字会丢失由编译器。

可能的解决方案:使用 double而不是 float .

1 - 实际上,您的文字是 1.123451234512345F . F后缀表示字面值是 float ,因此在计算字面值时精度会丢失。对于 double字面意思,去掉 F或替换为 D .

关于java - Kotlin float -> 字符串转换问题(也是 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59574482/

相关文章:

android - Kotlin 按范围内的值对数组进行排序

c++ - 如何重现 C++ 双舍入问题

C 中的 Cast 表达式语义

mysql - 将两个整数相除以获得 MySQL 中的 float

用于 SQL 的 Java 准备语句

java - 使用 Tomcat 提供所有 Web 内容

android - Anko 主题和风格

multithreading - 我可以从RxJava流内部通知BehaviorProcessor吗?

java - 如何将不同类的数据添加到jtable?

java - 查找/迭代 Android CustomListView,以查找选定的复选框