首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求kotlin中双精度浮点数的尾数和指数

问求kotlin中双精度浮点数的尾数和指数
EN

Stack Overflow用户
提问于 2020-11-24 02:27:28
回答 2查看 243关注 0票数 1

如何在kotlin中访问双精度数的尾数和指数?

多平台选项将是理想的,但是Double类没有这样的方法/属性。

EN

回答 2

Stack Overflow用户

发布于 2020-11-24 21:19:35

Kotlin提供了toBits()函数,它只是JDK的doubleToLongBits()的包装器。您可以从doubleToLongBits的文档中看到

掩码位62-52 (由掩码0x7ff0000000000000L选择的位)表示指数。位51-0 (由掩码0x000fffffffffffffL选择的位)表示浮点数的有效数(有时称为尾数)。

因此,您可以编写为您提取值的属性:

代码语言:javascript
复制
val Double.mantissa get() = toBits() and 0x000fffffffffffff
val Double.exponent get() = toBits() and 0x7ff0000000000000 shr 52

fun main() {
    println(1.0.mantissa)
    println(1.0.exponent)
}

输出:

代码语言:javascript
复制
0
1023

请注意,这些是原始的IEEE-754编码值。如果需要数值,则需要根据IEEE-754规范对其进行转换。

票数 2
EN

Stack Overflow用户

发布于 2020-11-24 03:44:49

我建议所有编程语言的解决方案都是通用的:

val mantissa = doubleValue - doubleValue.toInt()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64974200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档