问题标签 [mantissa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
time - 着色器时间统一 - clock_gettime 被截断
使用clock_gettime将此函数获取时间作为双倍:
将其发送到着色器需要转换为浮点数。尾数溢出并在通往着色器的途中被截断。
例子:
作为双 = 1330579093642.441895
作为浮点数 = 1330579111936.000000
由于截断,浮点值长时间停留在单个数字上。
似乎 res.tv_sec 中的秒值对于浮点数来说也太大了,它也在通往 GPU 的途中被截断。
试图测量自应用程序启动以来的时间,我很快遇到了同样的问题。
那么将运行时间值放入着色器的最佳方法是什么?linux 世界中的跨平台(如 IOS、Android、Linux)。
matlab - 在 Matlab 中,如何将变量用于科学计数法中的数字(matissa 和指数)?
我正在使用Matlab并使用科学记e
数法中的数字,这些数字用指数的字母表示。Matlab中的一个例子:
现在想使用科学计数法的数字,但使用变量来保存尾数和指数的值(分别为左侧和右侧e
)。e
如果变量名不与指数的字母合并,我不明白如何做到这一点。例如:
这还能做吗?或者我必须使用手动方法:
java - 在 Java 中用尾数解析浮点数
使用标准 JavaDouble
类来解析带有尾数的浮点数似乎省略了指数中的 + 号。
例如:
有什么方法可以使用 Double 获得 + 符号,而无需字符串后处理?
这BigDecimal
门课做得更好,例如
但它通常比 慢Double
,这在密集处理中表现出来。
algorithm - 为什么标准化数字的最高有效位始终为 1?
当以二进制工作时,有效数字的特征在于其二进制数字(位)的宽度。因为对于标准化数字,最高有效位始终为 1,所以该位通常不存储,称为“隐藏位”。根据上下文,隐藏位可能会或可能不会计入有效数字的宽度。例如,相同的 IEEE 754 双精度格式通常被描述为具有 53 位有效位(包括隐藏位)或 52 位有效位(不包括隐藏位)。隐藏位的概念仅适用于二进制表示。IEEE 754 将精度 p 定义为有效数字中的位数,包括任何隐含的前导位(例如,双精度格式的精度 p 为 53)。
为什么归一化数字的最高有效位始终为 1?有人可以用一个例子来解释吗?
java - 如何在 Java 中使用 double to int cast
我是 Java 新手,想知道 double to int cast 是如何工作的?我知道通过取低 32 位来 long 到 int 很简单,但是 double(64 位)到 int(32 位)呢?二进制中 double 的那些 64 位是双精度浮点格式(尾数),那么它如何在内部转换为 int 呢?
android - 十进制值的 Android EditText 不允许更改尾数
在我的 android 应用程序中,我使用 EditText 作为十进制值:
我用
用一个值填充这个 EditText。
现在的问题是像 1.0E-9 这样的值。可以更改指数,但除了删除数字之外,不能更改尾数。有谁知道解决方案(除了明显不使用 inputType numberDecimal)?
c - 将尾数作为位返回
我的c代码有点麻烦。我正在尝试提取符号、指数和尾数。到目前为止,它适用于符号和指数。问题从尾数开始。例如,我们以-5.0为例。符号1位,指数8位,尾数23位。这是-5.0的二进制表示法:
1 10000001 01000000000000000000000
1 = 符号
10000001 = 指数
01000000000000000000000 =尾数。
我想把尾数的部分还回去。
我得到的结果是负数。我不知道为什么它不起作用。你能帮忙找出问题吗?
关于萩
javascript - 在javascript中将整数转换为数字的小数部分的最有效方法是什么?
我想使用javascript将整数转换为数字的小数部分。
例如:
10030 -> 0.10030
123 -> 0.123
我想出了两种方法:
convertIntegerPartToFractionalPart1 不会产生 100% 准确的结果,例如 132232 转换为 0.13223200000000002。但是,在我的 MacBook Pro 上的 node.js 下,convertIntegerPartToFractionalPart1 的速度是 convertIntegerPartToFractionalPart2 的两倍多。(convertIntegerPartToFractionalPart1 的 1000000 次运行耗时 46 毫秒,convertIntegerPartToFractionalPart2 的 1000000 次运行耗时 96 毫秒)
有没有更好的方法来做到这一点?
perl - Perl 尾数与其他双精度数不同
我正在尝试以浮点数进行扫描: 13.8518009935297 。第一个例程是我自己的,第二个是 MacOSX libc 的 strtod,第三个是 GMP 的 mpf_get_d(),第四个是 perls numeric.c:Perl_my_atof2()。
我使用这个片段来打印尾数:
四个函数的返回值是:
前三个函数之间的区别在于四舍五入。然而 perl 的尾数是完全不同步的。
如果我再次将所有四个双精度数打印到一个字符串,我会得到相同的十进制双精度数,数字似乎是相等的。
我的问题:my-func、strtod、GMP 之间的区别是四舍五入。但是,为什么 perl 的尾数如此不同步,但是,如果转换回十进制,它仍然会再次成为相同的数字。差为 22,因此应以小数形式注明。我该如何解释?
追加: 对不起,我想我发现了问题:
tokenize_str() 是我实现从字符串到双精度的转换。但是 perl stringify "$r" 将 $r 打印为 13.8518009935297,这已经是截断了。$r 的实际值是不同的,所以当我最后将 $t 和 $r 的二进制文件放在一起时,我得到的值是不同的。
assembly - 从 5 位浮点表示中计算值
我已经在这方面做了很多工作,并且认为我遗漏了关于“压裂”部分的一些东西。在这个 5 位浮点数中,符号位是最高有效位,接下来的两位是指数,指数偏差为 1。最后两位是有效位(尾数)。
所以我有很多价值观,但我只是想更好地理解这个方法。第一个是:
我知道方程是
符号为零,并且由于数字是非规格化的,因此 E = 1-bias = 0(对吗?)
所以我有:
我遇到的问题是尾数值。我认为对于非规范化数字,它等于 0.frac,这里的 frac 等于 1 对吗?
那么 m = .1 吗?
我在网上找到了一堆东西,看起来 frac 是比特数的值?
所以也许 m = 1/5?
最后,有人告诉我我的答案应该表示为 x/4。那么m应该是1/4吗?如果是这样,为什么?
感谢任何人都可以提供的任何帮助或教导!