为什么Android API中有这么多的浮动?

2024-01-01

Java 中默认的浮点类型是 double。如果你硬编码一个常量,比如2.5在你的程序中,Java会自动将其变为双精度。当您对浮点数或整数执行可能受益于更高精度的操作时,该类型将“提升”为双精度。

但在 Android API 中,从音量到矩形坐标,一切似乎都是浮点数。有一个结构叫RectF用于大多数绘图; F 代表浮动。对于那些将晋级双打选回的程序员来说,这确实是一件痛苦的事(float)很经常。难道我们不都同意 Java 代码本身就很混乱和冗长吗?

通常数学协处理器和加速器更喜欢 Java 中的 double,因为它对应于一种内部类型。 Android 的 Dalvik VM 是否出于某种原因更喜欢浮动?或者所有的浮动只是 API 设计扭曲的结果?


在没有 FPU 的设备上,单精度浮点运算比双精度浮点运算快得多。因此,Android 框架提供了一个 FloatMath 类,它复制了一些 java.lang.Math 函数,但使用 float 参数而不是 double。

在最近带有 FPU 的 Android 设备上,单精度和双精度运算所需的时间大致相同,并且明显快于软件实现。 (“性能设计”页面是为 G1 编写的,需要更新以反映各种变化。)

顺便说一句,写“2.5f”或“(float) 2.5”并不重要。无论哪种方式,javac 都知道您需要一个单精度浮点常量,这就是它生成的内容。您可以通过编写示例程序并检查生成的字节码来验证这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么Android API中有这么多的浮动? 的相关文章

随机推荐

  • 为什么我的异常被捕获后仍然抛出?

    我有以下代码 其中使用函数调用的结果初始化变量 这个函数抛出异常 所以我设置了一个 try catch 来捕获异常 由于某种原因 即使 catch 子句运行后 异常仍然显示在屏幕上 include
  • 如何在Java Servlet中使用Session?

    我的 java 代码中的会话有问题 通过 post 提交表单后 java servlet 将确定验证码是否正确 我可以知道应该添加什么才能在 java servlet 中使用会话吗 我需要导入什么东西才能使用会话吗 protected vo
  • 在浏览器中编译sass文件

    我正在尝试为我的用户创建一个系统 他们可以在其中选择他们想要包含在项目中的特定 SCSS 文件 他们通过浏览器来完成此操作 一旦他们检查了所有相关的 SCSS 文件 他们就会想要点击基于浏览器的 编译 按钮来生成最终的 CSS 这可能吗 我
  • CSS 平台特定的 hack

    我想知道是否有一种方法可以使用 CSS 来定位平台 即不同的操作系统 Windows 7 Windows 8 Linux 等 我有一个样式表 带有 ul 列表和边框底部设置 当鼠标悬停在菜单元素上时会改变颜色 问题是 在 Windows 7
  • 使用下拉菜单外键保存表单集:IntegrityError XXX_id 可能不为 NULL

    我试图拥有一个表单集 其中每个表单 PropertySelector 都有一个下拉菜单 PropertySelector property 而该菜单的每个项目都是对另一个模型 Property 的ForeignKey引用 不知何故 当我尝试
  • 将RGB图像转换为灰度图像,减少java中的内存

    我有一个 RGB bufferedImage bImg 我想将 bImg 转换为灰度图像 BufferedImage grayIm new BufferedImage bImg getWidth null bImg getHeight nu
  • 在 Windows 窗体中获取多个 UI 线程

    我正在尝试找出一种方法让用户控件在自己的 UI 线程中运行 这可能吗 我试图防止基于模块的应用程序因单个模块而崩溃 有什么想法吗 那是不可能的 但是 通过一些重要的代码 您可以让不同的窗口在单独的线程中运行 每个窗口都有自己的消息循环 Up
  • sqlite SELECT 在查询列中是否存在与该列同名的值时返回所有记录

    sqlite3 test db SQLite version 3 6 21 Enter help for instructions Enter SQL statements terminated with a sqlite gt CREAT
  • ReferenceError:角度通用应用程序中未定义 IDBIndex

    我正在使用 ngserve 运行该应用程序 它运行良好 但是在我使用 npm run build ssr 构建应用程序后 应用程序构建成功 构建并运行 Angular 7 通用应用程序后 我在 dist 文件夹中收到这些错误 home tr
  • 为什么在堆排序中使用平面列表?

    In heapsort 数据存储在称为 heap 我见过的几乎所有实现都使用平面列表对于数据结构 有人可以向我解释这是为什么吗 为什么不使用嵌套数组 or an 二叉树的实例 显式不是比隐式更好吗 是因为遍历结构等实现困难 还是其他原因 如
  • 如何使用 XPath 仅选择可见元素?

    我有一个GWT http code google com webtoolkit 我正在尝试使用它编写一些测试的应用程序Selenium http seleniumhq org 我使用 XPath 来识别测试页面上的元素 使用id不会像id值
  • php:回显“”,打印(),printf()

    有没有更好的方法用PHP将数据输出到html页面 如果我想在 php 中用一些 var 制作一个 div 我会写类似的东西 print div var div or echo div var div 这样做的正确方法是什么 或者更好的方法
  • 如何在不修改 jquery.validate.unobtrusive.min.js 的情况下重写 JQuery unobtrusive 方法?

    我想重写 jquery validate unobtrusive js 中的 onErrors 方法 以将错误消息显示为 html 元素的超链接 但是 我不想更改 jquery validate unobtrusive js 中的方法 因为
  • VB.NET 中的十六进制到 8 位无符号数组

    我有一个十六进制值 07A5953EE7592CE8871EE287F9C0A5FBC2BB43695589D95E76A4A9D37019C8 我想将其转换为字节数组 NET 3 5 中是否有一个内置函数可以完成这项工作 或者我是否需要编
  • 有没有办法为我的基于平台的Python应用程序提供条件requirements.txt文件?

    我编写了一个与 Linux 和 Windows 平台兼容的 python 应用程序 然而有一个问题 我需要的 Windows 的 python 软件包之一与 Linux 不兼容 幸运的是 还有另一个软件包可以在 Linux 上提供相同的功能
  • 如果 char 数组是 Java 中的对象,为什么打印它不显示其哈希码?

    打印 char 数组不显示哈希码 class IntChararrayTest public static void main String args int intArray 0 1 2 char charArray a b c Syst
  • 有 BOINC 编程经验吗?

    我被 BOINC 吸引是因为我的一个小项目 我听说过 BOINC 但没有太多了解它的工作原理 主要是因为我现在专注于其他优先事项 我想知道的是 你们中是否有人真正尝试过为 BOINC 编程并让程序在分布式计算机网络上运行 我特别对以下问题感
  • Kotlin:什么情况下会发生隐式转换?

    我是 Kotlin 的初学者 我最熟悉Python 刚刚读完基础Java教程https docs oracle com javase tutorial java index html https docs oracle com javase
  • 可以为 jQuery 前置添加动画吗?

    我在单击按钮时将一些数据添加到我的页面中 而不是立即填充到页面上 我想知道是否有一种方法可以对数据进行动画处理prepend using slideToggle或 CSS 动画 这是我当前的脚本 var data data html var
  • 为什么Android API中有这么多的浮动?

    Java 中默认的浮点类型是 double 如果你硬编码一个常量 比如2 5在你的程序中 Java会自动将其变为双精度 当您对浮点数或整数执行可能受益于更高精度的操作时 该类型将 提升 为双精度 但在 Android API 中 从音量到矩