- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我们有一些序列作为输入。出于性能方面的原因,我们可能希望将其转换为同构表示。为了把它转换成同构表示,我们试图把它转换成相同的类型。在这里,我们只考虑输入中的两种类型——int64
和float64
(在我的简单代码中,我将使用numpy和python;这不是问题的关键——人们可能只考虑64位整数和64位浮点)。
首先,我们可以尝试将所有内容转换为float64
。
所以我们需要这样的输入:
31 1.2 -1234
float64
。如果我们都
int64
我们可以保持它不变(“已经同质”),或者如果发现其他东西,我们将返回“不同质”很直截了当。
31000000 1.2 -1234
int64
的大值:
format(np.float64(31000000), '.0f') # just convert to float64 and print
'31000000'
im = np.iinfo(np.int64).max # maximum of int64 type
format(np.float64(im), '.0f')
format(np.float64(im-100), '.0f')
'9223372036854775808'
'9223372036854775808'
im
和
im-100
值转换为相同的
float64
表示。原因很明显-
float64
在总共64位中只有53个有效位这就是为什么它的精度足以表示
log10(2^53) ~= 15.95
即所有16个长度
int64
而不丢失任何信息的原因但
int64
类型最多包含19位数字。
[10^16; 10^19]
(更准确地说是
[10^log10(53); int64.max]
)的范围,其中每个
int64
都可以用信息丢失来表示。
int64
和
float64
。
int64
范围转换为
float64
并“忘记”可能的信息丢失。
> 10^16 int64
值”。
float64
的阈值。在做选角决定时使用它。如果发现
int64
高于此阈值-不要转换(返回“不均匀”)。
log10(2^53)
圆形的。
"fint64"
。这是一个异国情调的决定,但我正在考虑甚至这一个完整性。
int
和
float
类型存储在一起时,这是常见的情况。二是
float64
型结构。我不太明白为什么一个人需要
~308
数字值范围,如果有效位只由
~16
数字组成,而其他
~292
数字本身就是噪声。因此,我们可以使用一个
float64
指数位来指示它的
float
或
int
是否存储在这里但是对于
int64
来说,丢失1位肯定是个缺点。因为我们的整数范围会缩小两倍但是我们可以在不增加额外开销的情况下,自由存储
int
s和
float
s。
float64
和
int64
方面失去了一定的范围我们更愿意做的不是减去1位,而是加上一位,表示存储在后面64位中的
int
或
float
类型的标志。
int64
或
float64
的序列转换为一些均匀的无损表示。这些解决方案按性能进行比较(例如,表示所需的总内存过多)仅此而已这里不考虑任何其他需求(因为我们应该考虑一个处于最小状态的问题——而不是编写整个应用程序)相应地,在同质无损状态下表示我们的数据的算法(我们确信我们没有丢失任何信息)适合我们的应用程序。
最佳答案
选择数据类型时有3个要求:
如果值可能有不同的符号
所需精度
所需范围
当然,硬件并没有提供很多可供选择的类型;所以您需要选择下一个最大的提供类型。例如,如果要以8位精度存储0到500之间的值;那么硬件不会提供类似的功能,您需要使用16位整数或32位浮点。
当选择同质表示时,有3个要求:
如果值可能有不同的符号;根据所代表的所有原始类型的要求确定
所需的精度;根据所代表的所有原始类型的要求确定
所需范围;根据所代表的所有原始类型的要求确定
例如,如果你有整数从10到10000000000,你需要一个不存在的35位整数类型,所以你将使用64位整数,如果你需要2到2的浮点值到31位,那么你需要一个不存在的33位浮点类型,所以你将使用一个64位浮点类型;从这两个原始类型的需求中,你会知道一个同构的表示需要一个符号标志,一个33位的有效值(带有隐含的位)和一个1位的指数,这是不存在的,所以你将使用64位浮点类型作为同构表示。
但是,如果您对原始数据类型的要求一无所知(并且只知道无论这些要求是什么,它们都会导致选择64位整数类型和64位浮点类型),那么您将不得不假设“最坏情况”。这导致需要具有符号标志、62位精度(加上隐含的1位)和8位指数的齐次表示当然,这个71位浮点类型不存在,所以您需要选择下一个最大类型。
还要注意,有时硬件不支持“下一个最大类型”当这种情况发生时,您需要使用“组合类型”-两个或更多基本类型的组合。这可以包括任何小于或等于“大有理数”(以“分子/除数*(1<<指数)”形式由3个大整数表示的数字)。
当然,如果原始类型(64位整数类型和64位浮点类型)是基元类型,并且同构表示需要使用“组合类型”;那么您的“出于性能原因,我们可能希望在同构表示中转换它”假设可能是错误的(出于性能原因,您希望避免使用同构表示)。
换句话说:
如果您对原始数据类型的要求一无所知,那么出于性能原因,您可能希望避免使用同构表示。
现在。。。
让我们将您的问题重新表述为“如何处理设计失败(选择不符合要求的错误类型)”只有一个答案,那就是避免设计失败。运行时检查(例如,如果转换为同构表示导致精度损失,则引发异常)除了通知开发人员设计失败之外,没有其他用途。
关于algorithm - 64位整数和64位浮点同构表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57186803/
据我所知,Aurelia 不支持提到的服务端渲染 here . 但问题是:是否可以通过一些技巧/解决方法来做到这一点? 最明显的想法是使用 Phantom、Nightmare.js 或其他任何工具在服
我目前正在开发一个在客户端和服务器之间使用一些共享 JS 的项目。技术堆栈包括 Node v6、Webpack、React 等。 有一个“共享”目录,服务器和客户端需要一个名为rules.js的文件。
我正在运行一个使用 React 和 webpack 的同构应用程序,一切都很好。不过,我正在努力处理的一件事是在渲染组件之前预加载 css。 我一直在尝试使用 导入我的 sass 文件(以便 webp
我找到了 2 个工具来解决服务器端模块加载器的问题:webpack-isomorphic-tools和 universal-webpack .有人可以向我解释这些东西如何工作的关键步骤吗?它如何捕获/
我基于 this repo 中的初学者工具包构建了一个同构 React 应用程序.它使用 webpack 构建生产代码。 问题是,我需要将服务器上的一些环境变量的值暴露给浏览器中的客户端代码,而无需重
我有一些同构的 JavaScript。我在客户端使用 RequireJS。 (function() { 'use strict'; function wrapper(require)
在 recursion-schemes 包定义了以下类型: newtype Fix f = Fix (f (Fix f)) newtype Mu f = Mu (forall a. (f a -> a
我正在努力了解服务器端路由和重定向与服务器端呈现/同构 javascript 之间的区别。如果它们不同,它们有何不同。 最佳答案 Universal (Isomorphic)Javascript 可以
我对 JavaScript 知识相当了解。我们计划使用 React、Redux、es6 等启动同构 Web 应用程序。我们有很多 API 调用需要集成。在开始之前,我想知道是否有可用的样板,或者最好一
我将应用程序重建为同构方法。在我的本地环境中一切正常(本地和在线 Node 版本相同)但不幸的是,将文件上传到我的网络服务器后,我收到以下错误消息: SyntaxError: .../index.js
我正在尝试创建一个 universal javascript (正式名称为同构 javascript)包。这意味着它应该作为 Node 模块工作,但也可以在浏览器中顺利运行 假设它看起来像这样: //
所以我几乎完成了我的第一个(同构)ReactJS,当我们部署它时,完成 build.js 有点慢。一个建议是使用 CDN 来分离 Assets 获取(cdn0、cdn1、cdn2...),我想知道如何
所以,我最近一直在摆弄一些同构的 React + Flux,说实话,发现一些概念相当令人困惑。我一直在研究有关如何构建同构应用程序的最佳实践并寻求建议。 假设您正在创建一个由同一 REST API 支
我正在 Next.js remote fetching 上做以下练习。我无法理解和适应的是练习从 http://api.tvmaze.com 获取数据。 . 数据如下: [ {"score":24,
我似乎遇到了一个奇怪的错误。我目前正在使用 Redux 同构,并且还包括 redux-thunk 作为异步操作的中间件。这是我的商店配置: // Transforms state date from
我在 CNTK 中调用 trainer.restore_from_checkpoint 时遇到以下异常。 'This' function is not equivalent (isomorphic)
我已经使用 nodejs 创建了库,并使用 webpack 将其捆绑,以便可以在客户端使用。 但如果我尝试将捆绑文件用于我的 Node 应用程序,它就无法工作。那么,我该如何创建同时适用于客户端和服务
我开始创建基于 Node.js 的同构 React/Redux 应用程序。该项目的一个要求是基于“移动”和“桌面” View 的特定组件的“自适应”渲染。我已经实现了 Redux Action 和缩减
关于同构通量应用程序中存储数据填充的问题。 (我使用的是 react、alt、iso 和 node,但理论适用于其他示例) 我有一个 flux 'store' ( http://alt.js.org/
我最近使用 React-Redux-Express-Mongoose 堆栈构建了一些同构/通用项目。 在我的 Mongoose 模型中包含很多业务逻辑。作为一个非常基本的示例(请原谅我的 ES6):
我是一名优秀的程序员,十分优秀!