小编kmc*_*mee的帖子

C++与sprintf绑定的舍入行为一致性

我有一个在Windows/Linux上运行的C++程序.在Windows上,程序是使用Visual Studio 2012和Linux编译的,它是使用GCC编译的.使用sprintf将双精度转换为字符串时,Visual Studio使用与GCC编译器不同的舍​​入方法进行绑定 - 即以5结尾的小数.

Visual Studio编译器似乎执行了从零开始的一半,而GCC 甚至绕过了名为银行家的四舍五入.

Round even是理想的行为.

是否可以在visual studio/windows中更改用于sprintf格式字符串的舍入行为?因为我需要使舍入在两者之间保持一致.

这是一个小样本C++程序,它说明了上述行为:

int main()
{   
   char buffer[100];

   double x;
   for (x = -0.5; x <= 10.5; x += 1.0)
   {
      sprintf(buffer,"%4g %.0f\n", x, x);

      std::cout << buffer;
   }  

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

Windows输出.数字从零开始舍入:

视窗

使用xCode编译的OSX输出.使用圆形甚至朝向偶数舍入数字:

OSX

OSX输出:

c++ printf gcc visual-studio

7
推荐指数
1
解决办法
610
查看次数

使用Cosmos DB Graph-API一次插入多个顶点

我希望使用Azure Cosmos DB Graph-API快速插入多个顶点.大多数当前的Microsoft示例逐个创建顶点并为每个顶点执行Gremlin查询,如下所示:

IDocumentQuery<dynamic> query = client.CreateGremlinQuery<dynamic>(graph, "g.addV('person').property('id', 'thomas').property('name', 'Thomas').property('age', 44)");

while (query.HasMoreResults)
{                    
    foreach (dynamic result in await query.ExecuteNextAsync())  {   
        Console.WriteLine($"\t {JsonConvert.SerializeObject(result)}"); 
    }
    Console.WriteLine();
}


query = client.CreateGremlinQuery<dynamic>(graph, "g.addV('person').property('id', 'mary').property('name', 'Mary').property('lastName', 'Andersen').property('age', 39)");

while (query.HasMoreResults)
{                    
    foreach (dynamic result in await query.ExecuteNextAsync())  {   
        Console.WriteLine($"\t {JsonConvert.SerializeObject(result)}"); 
    }
    Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)

然而,当我想创建几千个顶点和边缘以初始填充图形时,这不太理想,因为这可能需要一些时间.

这是与Microsoft.Azure.Graphs库v0.2.0-preview

如何有效地将多个顶点一次添加到Cosmos DB中,以便稍后使用Graph API语法进行查询?

gremlin azure-cosmosdb

6
推荐指数
1
解决办法
2138
查看次数

C#将二进制或项一起列出到一个位掩码结果中

我在列表中的C#中有一个位标志列表。我想将它们二进制或一起生成一个位掩码。

例如,修饰符键枚举被视为带有Flags属性的位字段,如下所示:

[Flags]
public enum ModifierKeys : uint
{
    Alt = 1,
    Control = 2,
    Shift = 4,
    Win = 8
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用for循环并按位或将这些值作为uint一起执行此操作,然后将其转换回枚举类型。我当前的工作方法如下所示:

public ModifierKeys ComputeMask(List<ModifierKeys> keys)
{
   uint value = 0;
   foreach(var item in keys)
   {
       value |= (uint)item;
   }

   return (ModifierKeys)value;
}
Run Code Online (Sandbox Code Playgroud)

我的问题-我可以用一个LINQ查询还是我缺少的其他扩展名来完成此操作?

c# linq enums

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

标签 统计

azure-cosmosdb ×1

c# ×1

c++ ×1

enums ×1

gcc ×1

gremlin ×1

linq ×1

printf ×1

visual-studio ×1