为什么第一个和第二个写入工作但不是最后一个?有没有办法我可以允许所有3个并检测它是1,(int)1还是我传入?真的为什么一个允许但最后一个?第二个被允许但不是最后一个真的让我大吃一惊.
using System;
class Program
{
public static void Write(short v) { }
static void Main(string[] args)
{
Write(1);//ok
Write((int)1);//ok
int i=1;
Write(i);//error!?
}
}
Run Code Online (Sandbox Code Playgroud) 在Java中将int转换为二进制字符串表示形式的最佳方法(理想情况下,最简单)是什么?
例如,假设int是156.二进制字符串表示为"10011100".
PHP有一个intval()将字符串转换为整数的函数.但是,我想事先检查字符串是否为整数,以便我可以向用户提供有用的错误消息,如果它是错误的.PHP有is_int(),但是对于字符串,它返回false "2".
PHP具有该is_numeric()函数,但如果该数字为double,则返回true.我想要一个会为double返回false的东西,但是对于int来说是真的.
例如:
my_is_int("2") == TRUE
my_is_int("2.1") == FALSE
Run Code Online (Sandbox Code Playgroud) 如何使用C#和.NET 3.5/4优雅地完成这项工作?
例如,数字可以在1到100之间.
我知道一个简单的就足够了; 但这个问题的关键词是优雅.这是我的玩具项目不是为了生产.
这个问题不是关于速度,而是关于代码美.停止谈论效率等等; 记住你正在向合唱团讲道.
是否有一种首选方法可以将numpy数组的数据类型固定为int(int64或者其他),同时仍然将内部元素列为numpy.NaN?
特别是,我正在将内部数据结构转换为Pandas DataFrame.在我们的结构中,我们有整数类型的列仍然有NaN(但列的dtype是int).如果我们把它变成一个DataFrame,它似乎将所有东西重铸为浮点数,但我们真的很喜欢int.
思考?
事情尝试:
我尝试使用from_records()pandas.DataFrame下的函数coerce_float=False,但这并没有帮助.我也尝试使用带有NaN fill_value的NumPy掩码数组,这也没有用.所有这些都导致列数据类型变为浮点数.
我想转换long为int.
如果long> 的值int.MaxValue,我很乐意让它环绕.
什么是最好的方法?
我似乎无法找到一个关于一个简单问题的答案:如何将任何数字四舍五入到最近int?
例如,每当数字为0.2,0.7,0.2222,0.4324,0.9999时,我希望结果为1.
到目前为止我有
int b = (int) Math.ceil(a / 100);
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有完成这项工作.
将int转换为字符串的最短路径是什么,最好是内联的?使用stl和boost的答案将受到欢迎.
我在c#中有一个char:
char foo = '2';
Run Code Online (Sandbox Code Playgroud)
现在我想把2变成一个int.我发现Convert.ToInt32返回char的实际十进制值而不是数字2.以下将起作用:
int bar = Convert.ToInt32(new string(foo, 1));
Run Code Online (Sandbox Code Playgroud)
int.parse也适用于字符串.
C#中没有本地函数从char到int而不是字符串吗?我知道这是微不足道的,但似乎很奇怪,直接进行转换没有任何原生的东西.
我有以下简单的代码:
int speed1 = (int)(6.2f * 10);
float tmp = 6.2f * 10;
int speed2 = (int)tmp;
Run Code Online (Sandbox Code Playgroud)
speed1和speed2应该具有相同的值,但事实上,我有:
speed1 = 61
speed2 = 62
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用Math.Round而不是cast,但我想了解为什么值不同.
我查看了生成的字节码,但除了存储和加载外,操作码是相同的.
我也在java中尝试了相同的代码,我正确地获得了62和62.
有人可以解释一下吗?
编辑: 在实际代码中,它不是直接6.2f*10而是函数调用*常量.我有以下字节码:
速度1:
IL_01b3: ldloc.s V_8
IL_01b5: callvirt instance float32 myPackage.MyClass::getSpeed()
IL_01ba: ldc.r4 10.
IL_01bf: mul
IL_01c0: conv.i4
IL_01c1: stloc.s V_9
Run Code Online (Sandbox Code Playgroud)
速度2:
IL_01c3: ldloc.s V_8
IL_01c5: callvirt instance float32 myPackage.MyClass::getSpeed()
IL_01ca: ldc.r4 10.
IL_01cf: mul
IL_01d0: stloc.s V_10
IL_01d2: ldloc.s V_10
IL_01d4: conv.i4
IL_01d5: stloc.s V_11
Run Code Online (Sandbox Code Playgroud)
我们可以看到操作数是浮点数,唯一的区别是stloc/ldloc
至于虚拟机,我尝试使用Mono/Win7,Mono/MacOS和.NET/Windows,结果相同