标签: integer

如何将一个月份名称(字符串)解析为整数,以便在C#中进行比较?

我需要能够比较我在数组中的一些月份名称.

如果有一些直接的方式会很好:

Month.toInt("January") > Month.toInt("May")
Run Code Online (Sandbox Code Playgroud)

我的谷歌搜索似乎建议唯一的方法是编写自己的方法,但这似乎是一个常见的问题,我认为它本来已经在.Net中实现过,之前有人这样做了吗?

c# parsing integer compare

89
推荐指数
7
解决办法
13万
查看次数

可空类型"int"的默认值是多少?(包括问号)?

在C#中,类型实例变量的默认值是int?什么?

例如,在以下代码中,MyNullableInt如果从未明确分配,将具有什么值?

class MyClass
{
    public int? MyNullableInt;
}
Run Code Online (Sandbox Code Playgroud)

(似乎答案几乎肯定是null或者0,但是那些是什么?)

c# integer nullable

89
推荐指数
2
解决办法
6万
查看次数

如何在Swift语言中获得某些Integer的强大功能?

我最近学得很快,但我有一个无法找到答案的基本问题

我想得到类似的东西

var a:Int = 3
var b:Int = 3 
println( pow(a,b) ) // 27
Run Code Online (Sandbox Code Playgroud)

但pow函数只能使用double数,它不能用整数运算,我甚至无法通过Double(a)或a.double()等函数将int转换为double.

为什么它不提供整数的幂?它肯定会返回一个没有歧义的整数!为什么我不能将整数转换为double?它只是改变3到3.0(或3.00000 ...无论如何)

如果我有两个整数并且我想进行电源操作,我该怎样才能顺利完成?

谢谢!

double integer pow swift

88
推荐指数
8
解决办法
9万
查看次数

为什么最负的int值会导致有关模糊函数重载的错误?

我正在学习C++中的函数重载,并遇到了这个问题:

void display(int a)
{
    cout << "int" << endl;
}

void display(unsigned a)
{
    cout << "unsigned" << endl;
}

int main()
{
    int i = -2147483648;
    cout << i << endl; //will display -2147483648
    display(-2147483648);
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,该int范围内给出的任何值(在我的情况下int是4个字节)都将调用,display(int)并且该范围之外的任何值都将是不明确的(因为编译器无法决定调用哪个函数).int除了最小值之外,它对整个值范围有效,即-2147483648编译因错误而失败

超载的召唤display(long int)是模棱两可的

但是将相同的值与a int打印并给出值2147483648.我对这种行为感到困惑.

为什么只有在传递最负数时才会观察到这种行为?(该行为是相同的,如果一个short使用具有-32768-事实上,在负数和正数具有相同的二进制表示任何情况下)

使用的编译器:g ++(GCC)4.8.5

c++ integer overloading negative-number ambiguous-call

88
推荐指数
2
解决办法
4553
查看次数

生成1到100之间的唯一随机数

如何使用JavaScript生成8个,比如1到100之间的唯一随机数?

javascript random integer numbers

87
推荐指数
7
解决办法
16万
查看次数

高效的无符号签名转换,避免实现定义的行为

我想定义一个带有unsigned intas参数的函数,并向参数返回一个int全等模UINT_MAX + 1.

第一次尝试可能如下所示:

int unsigned_to_signed(unsigned n)
{
    return static_cast<int>(n);
}
Run Code Online (Sandbox Code Playgroud)

但正如任何语言律师所知,从无符号转换为大于INT_MAX的已签名值是实现定义的.

我想实现这一点,以便(a)它只依赖于规范规定的行为; (b)它在任何现代机器上编译成无操作并优化编译器.

对于奇怪的机器......如果没有签名的int congruent将UINT_MAX + 1模数为unsigned int,那么假设我想抛出一个异常.如果有多个(我不确定这是否可能),那么就说我想要最大的一个.

好的,第二次尝试:

int unsigned_to_signed(unsigned n)
{
    int int_n = static_cast<int>(n);

    if (n == static_cast<unsigned>(int_n))
        return int_n;

    // else do something long and complicated
}
Run Code Online (Sandbox Code Playgroud)

当我不是一个典型的二元补充系统时,我并不太关心效率,因为我认为不太可能.如果我的代码成为2050年无所不在的符号量级系统的瓶颈,那么,我敢打赌,有人可以解决这个问题并对其进行优化.

现在,第二次尝试非常接近我想要的.尽管转换int为某些输入的实现定义,但是unsigned标准保证转换为保留模UINT_MAX + 1的值.所以条件确实检查我想要什么,它将在我可能遇到的任何系统上编译成什么.

但是......我仍然在int没有首先检查它是否会调用实现定义的行为.在2050年的一些假设系统中,它可以做谁知道什么.所以我想说我想避免这种情况.

问题:我的"第三次尝试"应该是什么样的?

回顾一下,我想:

  • 从unsigned int转换为signed int
  • 保留值mod UINT_MAX + 1
  • 仅调用标准强制行为
  • 在具有优化编译器的典型二进制补码机器上编译成无操作

[更新]

让我举一个例子来说明为什么这不是一个微不足道的问题.

考虑具有以下属性的假设C++实现:

  • sizeof(int) 等于4
  • sizeof(unsigned) 等于4
  • INT_MAX 等于32767
  • INT_MIN等于-2 …

c++ integer casting integer-overflow language-lawyer

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

R中的整数类和数字类有什么区别

我想说这是一个绝对的编程初学者,所以请原谅这个问题是多么基本.

我试图更好地理解R中的"原子"类,也许这适用于编程中的类.我理解字符,逻辑和复杂数据类之间的区别,但我很难找到数字类和整数类之间的根本区别.

假设我有一个简单x <- c(4, 5, 6, 6)的整数向量,这对于整数类是有意义的.但是,当我这样做class(x),我得到[1] "numeric".然后,如果我将此向量转换为整数类x <- as.integer(x).除了类不同之外,它返回相同的精确数字列表.

我的问题是为什么会出现这种情况,以及为什么一组整数的默认类是一个数字类,以及将整数设置为数字而不是整数的优点和缺点是什么.

integer r class numeric object

83
推荐指数
3
解决办法
11万
查看次数

在C#整数运算中,a/b/c总是等于a /(b*c)?

设a,b和c为非大正整数.a/b/c是否始终等于/(b*c)与C#整数运算?对我来说,在C#中它看起来像:

int a = 5126, b = 76, c = 14;
int x1 = a / b / c;
int x2 = a / (b * c);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:x1 == x2为所有a,b和c做什么?

c# math integer integer-arithmetic

81
推荐指数
2
解决办法
3902
查看次数

Java Integer compareTo() - 为什么使用比较与减法?

我发现方法的java.lang.Integer实现compareTo如下:

public int compareTo(Integer anotherInteger) {
    int thisVal = this.value;
    int anotherVal = anotherInteger.value;
    return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
Run Code Online (Sandbox Code Playgroud)

问题是为什么使用比较而不是减法:

return thisVal - anotherVal;
Run Code Online (Sandbox Code Playgroud)

java optimization comparison integer overflow

78
推荐指数
3
解决办法
1万
查看次数

JavaScript支持64位整数吗?

我有以下代码:

var str = "0x4000000000000000";   //4611686018427387904 decimal
var val = parseInt(str);
alert(val);
Run Code Online (Sandbox Code Playgroud)

我得到这个值:" 4611686018427388000",这是0x4000000000000060

我想知道JavaScript是否错误处理64位整数还是我做错了什么?

javascript 64-bit integer numbers

76
推荐指数
3
解决办法
5万
查看次数