【问题标题】:Get exponent from a scientific notation从科学记数法中获取指数
【发布时间】:2017-01-13 16:17:46
【问题描述】:

我们如何从“科学”符号中提取指数和符号?

如果我们用 printf("%lf %e") 打印一个双精度值,它会显示 par ex.:

   normal   scientific
   ------   ----------
   -888.3   -8.88e2    
    1.23     1.23e0    
    3.001    3.1e-1

How to get Exponent of Scientific Notation in Matlab中指出的解决方案

x = floor(log10(N))

仅适用于正值 N。使用 -N 它显示 -nan(ind)。显然,不允许使用负值的 Log10()。

【问题讨论】:

  • 你能用abs吗?
  • 是的,但是我的标志是错误的
  • this 你在找什么吗?
  • 不,这不在科学计数法中
  • 为什么不只用bool neg = signbit(N); 跟踪符号,然后在计算floor(log10(abs(N))) 后重新应用签名?

标签: c++


【解决方案1】:

你不关心数字的符号,你只需要指数,所以你可以安全地摆脱符号:

log10(abs(N))

其中abs 返回N 的绝对值,它始终为非负值,因此可以用作log10 的参数。

【讨论】:

  • 我也需要这个标志。 Ex -3 或 3 差别很大
  • @TomTom,我的回答是删除数字的符号,而不是指数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 2017-04-05
相关资源
最近更新 更多