标签: integer

为什么(0-6)是-6 =假?

可能重复:
Python"is"运算符使用整数意外运行

今天我试着调试我的项目,经过几个小时的分析,我得到了这个:

>>> (0-6) is -6
False
Run Code Online (Sandbox Code Playgroud)

但,

>>> (0-5) is -5
True
Run Code Online (Sandbox Code Playgroud)

你能解释一下,为什么?也许这是某种错误或非常奇怪的行为.

> Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2
>>> type(0-6) 
<type 'int'>
>>> type(-6) 
<type 'int'>
>>> type((0-6) is -6)
<type 'bool'>
>>> 
Run Code Online (Sandbox Code Playgroud)

python debugging integer cpython

129
推荐指数
4
解决办法
4897
查看次数

C++将十六进制字符串转换为有符号整数

我想在C++中将十六进制字符串转换为32位有符号整数.

因此,例如,我有十六进制字符串"fffefffe".二进制表示形式为11111111111111101111111111111110.有符号整数表示形式为:-65538.

如何在C++中进行此转换?这也需要适用于非负数.例如,十六进制字符串"0000000A",二进制为00000000000000000000000000001010,十进制为10.

c++ hex signed integer

127
推荐指数
7
解决办法
31万
查看次数

将BigDecimal转换为Integer

我有Hibernate方法,它返回一个BigDecimal.我有另一个API方法,我需要传递该数字但它接受Integer作为参数.我无法更改两种方法的返回类型或变量类型.

现在如何将BigDecimal转换为Integer并将其传递给第二个方法?

有没有办法解决这个问题?

java integer casting bigdecimal

126
推荐指数
5
解决办法
28万
查看次数

如何获取int数字的单独数字?

我有像1100,1002,1022等数字.我想有个别数字,例如第一个数字1100我想要1,1,0,0.

我怎样才能用Java获取它?

java integer modulo

124
推荐指数
10
解决办法
51万
查看次数

将int转换为ASCII并返回Python

我正在为我的网站制作一个URL缩短器,我当前的计划(我愿意接受建议)是使用节点ID来生成缩短的URL.因此,理论上,节点26可能是short.com/z,节点1可能是short.com/a,节点52可能是short.com/Z,节点104可能是short.com/ZZ.当用户访问该URL时,我需要反转该过程(显然).

我可以想到一些方法可以解决这个问题,但我猜测有更好的方法.有什么建议?

python ascii encode integer

123
推荐指数
5
解决办法
28万
查看次数

C++性能挑战:整数到std :: string的转换

任何人都可以击败我的整数到std :: string代码的性能,链接如下?

已经有几个问题可以解释如何将整数转换为std::stringC++中的整数,例如这个,但是所提供的解决方案都没有效率.

以下是一些可用于竞争的常用方法的编译就绪代码:

流行的看法相反,boost::lexical_cast有自己的实现(白皮书)并且不使用stringstream和数字插入运算符.我真的希望看到它的性能比较,因为另一个问题表明它很悲惨.

我自己的贡献,在桌面计算机上具有竞争力,并演示了一种在嵌入式系统上全速运行的方法,与依赖整数模数的算法不同:

如果您想使用该代码,我将根据简化的BSD许可证提供(允许商业使用,需要归属).请问.

最后,该功能ltoa是非标准的,但可广泛使用.

  • ltoa版本,适用于拥有提供它的编译器的任何人(ideone没有):http://ideone.com/T5Wim

我很快就会发布我的性能测量结果.

算法规则

  • 提供将至少32位有符号和无符号整数转换为十进制的代码.
  • 产生输出作为std::string.
  • 没有与线程和信号不兼容的技巧(例如,静态缓冲区).
  • 您可以假设ASCII字符集.
  • 确保INT_MIN在绝对值无法表示的二进制补码机上测试代码.
  • 理想情况下,输出应为字符的字符与规范的C++版本使用相同的stringstream,http://ideone.com/jh3Sa,但任何事情,这显然是理解的,因为正确的号码也是OK.
  • :虽然你可以使用你想要进行比较的任何编译器和优化器选项(除了完全禁用),但代码还需要编译并在至少VC++ 2010和g ++下给出正确的结果.

希望讨论

除了更好的算法,我还想在几个不同的平台和编译器上获得一些基准测试(让我们使用MB/s吞吐量作为我们的标准测量单位).我相信我的算法代码(我知道sprintf基准测试需要一些快捷方式 - 现在已经修复)是标准的明确定义的行为,至少在ASCII假设下,但是如果你看到任何未定义的行为或输出的输出无效,请指出.

结论:

不同的算法对g ++和VC2010执行,可能是由于std::string每个算法的实现不同.VC2010显然在NRVO方面做得更好,摆脱了价值回报只对gcc有帮助.

发现代码的性能优于sprintf一个数量级. ostringstream落后50倍甚至更多.

挑战的胜利者是user434507,他在gcc上生成的代码运行速度是我自己的350%.由于SO社区的突发奇想,其他条目将被关闭.

目前(最终?)速度冠军是:

  • 对于gcc:user434507,速度比sprintf …

c++ string performance integer

118
推荐指数
6
解决办法
4万
查看次数

如何捕获整数(0)?

假设我们有一个产生的陈述integer(0),例如

 a <- which(1:3 == 5)
Run Code Online (Sandbox Code Playgroud)

抓住这个最安全的方法是什么?

error-handling integer r try-catch

118
推荐指数
5
解决办法
10万
查看次数

为什么OCaml中的int只有31位?

在其他任何地方都没见过这个"功能".我知道第32位用于垃圾收集.但是为什么它只是针对整数而不是其他基本类型呢?

ocaml integer

113
推荐指数
4
解决办法
3万
查看次数

为什么Python 3允许"00"作为0的文字而不允许"01"作为1的文字?

为什么Python 3允许"00"作为0的文字而不允许"01"作为1的文字?有充分的理由吗?这种不一致令我感到困惑.(我们正在讨论Python 3,它故意破坏向后兼容性以实现一致性等目标.)

例如:

>>> from datetime import time
>>> time(16, 00)
datetime.time(16, 0)
>>> time(16, 01)
  File "<stdin>", line 1
    time(16, 01)
              ^
SyntaxError: invalid token
>>>
Run Code Online (Sandbox Code Playgroud)

python integer literals python-3.x leading-zero

109
推荐指数
2
解决办法
4912
查看次数

测试string是否为有效整数

我正在尝试做一些常见的事情:在shell脚本中解析用户输入.如果用户提供了有效的整数,则脚本会执行一项操作,如果无效,则执行其他操作.麻烦的是,我还没有找到一种简单(而且相当优雅)的方式 - 我不想用char来区分char.

我知道这一定很容易,但我不知道如何.我可以用十几种语言来做,但不是BASH!

在我的研究中,我发现了这个:

正则表达式,用于测试字符串是否包含基数为10的有效实数

其中有一个关于正则表达式的答案,但据我所知,这是C(以及其他)中可用的函数.尽管如此,它看起来像是一个很好的答案,所以我用grep尝试了它,但是grep不知道该怎么做.我试过-P在我的盒子上意味着把它当作PERL regexp - nada.Dash E(-E)也没有用.并且-F都没有.

为了清楚起见,我正在尝试这样的东西,寻找任何输出 - 从那里,我将破解脚本以利用我得到的任何东西.(IOW,我期待一个不合格的输入在有效行重复时不返回任何内容.)

snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/")
if [ -z "$snafu" ] ;
then
   echo "Not an integer - nothing back from the grep"
else
   echo "Integer."
fi
Run Code Online (Sandbox Code Playgroud)

有人请说明这是最容易做到的吗?

坦率地说,在我看来,这是TEST的缩影.它应该有这样的旗帜

if [ -I "string" ] ;
then
   echo "String is a valid integer."
else
   echo "String is not a valid integer."
fi
Run Code Online (Sandbox Code Playgroud)

string bash integer if-statement

108
推荐指数
7
解决办法
14万
查看次数