2

我仍然在 Vim 中遇到数字问题:

体育

let a = 1.02 | let b = '10000000' | let total = a*b | echo total --> 1.02e7  

我想避免使用指数。我怎样才能有输出 10200000 ?

let a = 4000000000 | let b = '1' | let total = a+b | echo total  --> -294967295 

为什么这会给出错误的输出?

肿瘤坏死因子

4

3 回答 3

2
:echo printf("%.0f", 4000000000.0 + 1.0)

注意事项:

  • 您正在使用 string->int 转换来进行算术运算,这通常不是一件好事。
  • 整数是机器字大小的,所以大数字会溢出,尤其是在 32 位机器上。
  • 浮点数格式通常使用 %g,如果要控制精度,请使用 printf。
  • 如果您要处理大量数字,请使用浮点数,尽管如果您期望精确的精度,那真的不会很好。
于 2012-04-26T09:46:52.477 回答
2

溢出很容易被看到

:let a = 4000000000 | echo a --> -294967296
于 2012-04-26T09:53:35.683 回答
1

使用printf

let a = 1.02 | let b = '10000000' | let total = a*b | echo printf( "%.f", total)

输出:

10200000
于 2012-04-26T09:43:51.947 回答