在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) 我曾经read.table读过一个包含0.00001等数字的文件
当我把它们写回来时,write.table这些数字显示为1e-5
我怎样才能保留旧格式?
我有一个需要包含产品的SQLite数据库.这些产品具有固定格式的复合产品编号,包括类别,组和产品编号(cccccc.gg.ppp).每次插入新产品时,都应使用类别和组编号构建新产品编号,然后使用该编号增加1中的最高产品编号.
为此,我考虑将所有三个数字存储在单独的字段中,并使用视图动态组合产品编号.为了实现这一点,我需要添加前导零,因为产品编号的格式是固定的.
但是,我似乎无法找到一个内置的SQLite函数,它可以让我这样做...... :-(
我宁愿不写自定义函数,因为我们可能不得不与其他开发人员共享数据库,以便他们从中读取数据; 我不知道他们将使用什么平台或语言.
可以这样做吗?或者我们必须找到不同的解决方案吗?
我是VB.net的新手(自学成才),只是想知道是否有人可以帮我解决一些代码问题.我不是想做任何太多涉及的事情,只是TextBox接受一个从1到10的数值.我不希望它接受一个字符串或任何高于10的数字.如果有人输入一个单词或字符的错误信息将出现,告诉他输入有效的号码.这就是我的意思; 显然它不是很好,因为我有问题.再次感谢任何可以提供帮助的人.
If TxtBox.Text > 10 Then
MessageBox.Show("Please Enter a Number from 1 to 10")
TxtBox.Focus()
ElseIf TxtBox.Text < 10 Then
MessageBox.Show("Thank You, your rating was " & TxtBox.Text)
Total = Total + 1
ElseIf IsNumeric(TxtBox.Text) Then
MessageBox.Show("Thank you, your rating was " & ValueTxtBox.Text)
End If
ValueTxtBox.Clear()
ValueTxtBox.Focus()
Run Code Online (Sandbox Code Playgroud) 我想复合增长超过一年,但我不关心小数点,所以我试过
take 52 $ iterate (floor . (*1.1)) 100
Run Code Online (Sandbox Code Playgroud)
问题是is的类型(floor . (*1.1))是Double -> Integer,而第一个arg迭代所期望的类型是a -> a.
我尝试了几种方法,但最终将自己捆绑在一起.
在函数应用程序中保持数字类型一致的首选解决方案是什么?
这是我认为一个简单的问题,但还没有得到解决方案.我想从这里解释的列中获取有效数字.
假设我们有一个varchar列,其中包含以下值
ABC
Italy
Apple
234.62
2:234:43:22
France
6435.23
2
Lions
Run Code Online (Sandbox Code Playgroud)
这里的问题是只选择数字
select * from tbl where answer like '%[0-9]%' 会做到但它会回来
234.62
2:234:43:22
6435.23
2
Run Code Online (Sandbox Code Playgroud)
在这里,显然,2:234:43:22是不可取的,因为它不是有效数字.
期望的结果是
234.62
6435.23
2
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我有一些浮点值我想转换为字符串,我想在转换时保持格式相同,即999.0000(浮点) - > 999.0000(字符串).我的问题是当值包含小数点后的任意数量的零时,如前例所示,它们在转换为字符串时被剥离,因此我实际上最终得到的结果是999.
我查看了MSDN上toString()方法的格式说明符,RoundTrip('R')说明符看起来会产生我想要的,但它只支持Single,Double和BigInt变量.浮点变量是否有这样的格式说明符?或者将值转换为双精度会更容易吗?
更新:为了清楚起见,我想保留尾随零的原因是因为我正在对小数位进行比较,即我正在比较两个值之间小数位后的位数.因此,例如,1.00和1.00000在小数点后具有不同的位数.我知道这是一个奇怪的请求,它是为了工作而且需求来自高位.
更新2-3-11:
我正在考虑这个问题,我正在读取txt文件中的数字,然后将它们解析为浮点数,我将修改程序以检查字符串值是小数还是整数.很抱歉浪费你的时间,虽然这非常有见地.
double d = 4.321562;
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法从d中提取0.321562?我试着看数学课,但没有运气.如果这可以在不转换为字符串或转换为其他任何内容的情况下完成,甚至更好.
文档std::numeric_limits<T>说它不应该专门针对非基本类型.数字式用户定义类型怎么样?如果我定义了我自己的T表示数值的类型并重载数字运算符,并且表示的信息numeric_limits是有意义的 - 如果我专门numeric_limits针对该类型,会有什么破坏吗?