在PHP 5中,每当我将数字作为输入时,我都使用intval().这样,我想确保我没有字符串或浮动数字.我的输入数字应该都是整数.但是当我得到数字> = 2147483647时,超过了有符号整数限制.
对于所有大小的数字,我能做些什么的intval()?
这就是我想要的:
<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; // output: 3147483647
?>
Run Code Online (Sandbox Code Playgroud)
非常感谢你提前!
编辑:根据一些答案,我试图编写一个等效的函数.但它并不像intval()那样完全正常.我怎样才能改进它?这有什么问题?
function intval2($text) {
$text = trim($text);
$result = ctype_digit($text);
if ($result == TRUE) {
return $text;
}
else {
$newText = sprintf('%.0f', $text);
$result = ctype_digit($newText);
if ($result == TRUE) {
return $newText;
}
else {
return 0;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一些存储在Integer被叫中的数字mode,但我需要在一个中使用它们TProcess.为此,我需要将其转换Integer为a String,因为如果我不这样做,我得到错误:
不兼容的类型:得到"LongInt"预期"AnsiString"
然后我想知道如何将a转换Integer为a String?
我使用python 2.6
>>> hex(-199703103)
'-0xbe73a3f'
>>> hex(199703103)
'0xbe73a3f'
Run Code Online (Sandbox Code Playgroud)
正负值是一样的吗?
当我使用calc时,值为FFFFFFFFF418C5C1.
我正在解决这个问题(问题一).声明是:
该集合中{1, 2, 3, ..., n}有多少子集是互质的?如果每个元素的每两个都是互质的,则一组整数称为互质.如果它们的最大公约数等于1,则两个整数是互质的.
输入
第一行输入包含两个整数n和m(1 <= n <= 3000, 1 <= m <= 10^9 + 9)
产量
输出{1, 2, 3, ..., n}模数的互质子集的数量m.
例
输入:4 7输出:5
有12点质数的子集{1,2,3,4}:{},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{3,4},{1,2,3},{1,3,4}.
我认为可以通过使用素数来解决.(跟踪我们是否使用了每个素数)..但我不确定.
我可以得到一些解决这个任务的提示吗?
我已经写了代码:
int x = 18;
x *= 0.90;
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)
这段代码打印出来16
然而,当我写下
int x = 18;
x = x * 0.90;
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:incompatible types: possible lossy conversion from double to int
我预计这两个代码示例都会导致与 相同的错误x *= y;,x = x * y;但x *= 0.90;不知何故有效,但x = x * 0.90;无效。为什么会这样呢?
好像我Integer.parseInt在comp中访问时遇到了问题.我可以像这样正常访问它:
user=> (Integer/parseInt "123")
123
Run Code Online (Sandbox Code Playgroud)
但如果我把它放在comp中,我会收到一个错误:
user=> (def vect-to-int (comp Integer/parseInt (partial apply str)))
java.lang.Exception: Unable to find static field: parseInt in class java.lang.Integer (NO_SOURCE_FILE:3)
Run Code Online (Sandbox Code Playgroud)
听起来我觉得它应该在寻找方法时尝试在Integer上找到一个字段.我Integer.parseInt该怎么用?是否有更好的方法将字符向量转换为int?
我正在学习Haskell,并希望在一些构造函数中强制使用正整数(1,2,3,...),但我似乎只能找到'Int'和'Integer'数据类型.
我可以使用规范
data Nat = Zero | Succ Nat
Run Code Online (Sandbox Code Playgroud)
但后来我不能用1,4,......来表示它们.
所以我问,有没有办法实现这个目标?(就像在C中使用'unsigned')
提前致谢.
编辑:正如CA McCann所解释的那样,我将把它隐藏在一个模块中.另外,我必须添加以下链接: http: //haskell.org/haskellwiki/Smart_constructors以获取有关该主题的摘要.感谢您抽出宝贵时间回答!
我有一些数据可以用无符号Integral类型表示,其最大值需要52位.仅限AFAIK Integer,Int64并Word64满足这些要求.
我可以找到关于这些类型的所有信息Integer都是签名的并且具有浮动的无限位大小,Int64并且Word64分别是固定的,有符号和无符号的.我不知道的是有关这些类型的实际实施的信息:
如果存储为Integer?,52位值实际占用多少位?
我是否正确,Int64并Word64允许您存储64位数据,并为任何值权重64位?
这些类型中的任何一种是否因大小等原因而更具性能或优先性,例如本机代码实现或直接处理器指令相关的优化?
以防万一:您建议将哪一个存储在一个对性能极为敏感的应用程序中的52位值?
我正在阅读在C++中将int设置为Infinity.我明白,当一个人需要真正的无限时,一个人应该使用numeric_limits<float>::infinity(); 我猜的理由背后是通常整型已指定为用于表示如特殊状态没有价值的NaN,天道酬勤,像等IEEE 754个浮动不(再C++不强制要求既不- int与float使用都留给实现); 但max > infinity对于给定的类型,它仍然是误导性的.我试图理解标准中这个调用背后的基本原理.如果infinity对某种类型没有意义,那么不应该禁止它而不是要检查其有效性的标志吗?