我有一个变量来自:
double result = myList.Count / mySeptum;
我要执行以下操作:
if( result == int ) {
//Do Something...
}
else{
//Do another thing...
}
我该怎么做?
我也尝试过这种方法,但是没有用:
if ( result%10 == 0 ){
...
}
在一个示例中:
private void button2_Click(object sender, EventArgs e)
{
int r = 10;
int l = 2;
double d = r / l;
if (d % 10 == 0)
{
Console.WriteLine("INTEGER");
}
else
{
Console.WriteLine("DOUBLE");
}
}
答案 0 :(得分:0)
例如:
double d = 1.0;
bool isInt = d == (int)d;
取模:
double d = 1.0;
bool isInt = d % 1 == 0;
答案 1 :(得分:0)
通常,计算机上的浮点数不能代表每个实数,而只能代表一些离散值。因此,仅对于几个整数,双精度有可能在数学上与整数值相同。对于大多数整数,最接近的双精度值将偏离少量。因此,如果您要查找完全匹配的内容,将无法正常工作。
但是,您可以做的是将双精度型转换为整数,检查双精度型和整数之间的差是否足够小:
double d = 1.5;
int i = (int) d;
double diff = d - i;
if (diff < 1.0e-6)
{
std::cout << "number is close to integer" << std::endl;
}
答案 2 :(得分:0)
如何检查我的double变量是否为整数?
从C的角度(如帖子最初的标记):
(我确定C#具有等效的功能。)
要确定double
是否为整数,请使用modf()
返回小数部分。
#include <math.h>
double x = ....;
double ipart;
if (isfinite(x) && modf(x, &ipart) == 0.0) {
// value is a whole number
....
要进一步测试它是否在int
范围内
if (ipart >= INT_MIN && ipart <= INT_MAX) {
int i = (int) ipart;
要检查更宽的整数类型,我们需要一些技巧,以确保在形成限制时没有舍入误差。代码利用INT..._MAX
是Mersenne numbers
#define INT64_MAX_P1 ((INT64_MAX/2 + 1)*2.0)
if (ipart >= INT64_MIN && ipart < INT64_MAX_P1) {
int64_t i64 = (int64_t) ipart;
答案 3 :(得分:-1)
尝试使用typeOf:
<script type="text/javascript">
function showSelected(val)
{
document.getElementById('selectedResult').innerHTML = val;
return val;
}
</script>
<?php
$val = "<script type='text/javascript'>showSelected('argumentValue');</script>";
?>