相关疑难解决方法(0)

如何在C++中将double转换为C#decimal?

鉴于我有十进制的重复表示 - 你可以在这里找到它- 我尝试用这种方式转换一个double:

explicit Decimal(double n)
{
    DoubleAsQWord doubleAsQWord;
    doubleAsQWord.doubleValue = n;
    uint64 val = doubleAsQWord.qWord;

    const uint64 topBitMask = (int64)(0x1 << 31) << 32;

    //grab the 63th bit
    bool isNegative = (val & topBitMask) != 0;

    //bias is 1023=2^(k-1)-1, where k is 11 for double
    uint32 exponent = (((uint64)(val >> 31) >> 21) & 0x7FF) - 1023;

    //exclude both sign and exponent (<<12, >>12) and normalize mantissa
    uint64 mantissa = ((uint64)(0x1 << 31) << 21) | …
Run Code Online (Sandbox Code Playgroud)

c++ decimal protocol-buffers

14
推荐指数
1
解决办法
2726
查看次数

使用协议缓冲区的小数和日期时间的最佳方法是什么?

我想找出存储协议缓冲区支持的列表中未包含的一些常见数据类型的最佳方法.

  • datetime(秒精度)
  • datetime(毫秒精度)
  • 具有固定精度的小数
  • 精度可变的小数
  • 很多bool值(如果你有很多bool值,看起来由于它们的标签,每个都会有1-2个字节的开销.

另外,我们的想法是将它们很容易地映射到相应的C++/Python/Java数据类型.

datetime decimal protocol-buffers

9
推荐指数
1
解决办法
7881
查看次数

您能用Google的协议缓冲区格式表示CSV数据吗?

我最近发现了协议缓冲区,并想知道它们是否可以应用于我的具体问题.

基本上我有一些CSV数据,我需要转换为更紧凑的格式存储,因为一些文件是几个演出.

CSV中的每个字段都有一个标题,只有两种类型,字符串和小数(因为有时会有很多有效数字,我需要以相同的方式处理所有数字).但是每个文件的每个字段都有不同的列名.

除了捕获原始CSV数据,我还需要能够在保存之前向文件中添加额外信息.我希望通过处理不同的文件版本来证明这一点.

那么,是否可以使用协议缓冲区来捕获随机数量的随机命名数据列,如CSV文件?

c# csv serialization protocol-buffers

5
推荐指数
1
解决办法
3140
查看次数

如何在 gRPC 中声明与 C# 相同的十进制对象

我们正在将现有的 REST API 服务转换为 gRPC 核心。在迁移现有类时,我们知道 gRPC 没有十进制数据类型。我们在 C# 中有一个类,其定义为

public class SalarySchedule
{
    public decimal Salary { get; set; }
    public DateTime? SalaryDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们在 proto 文件中将其实现为

message SalarySchedule
{
    // TODO: How to define this double to decimal
    double Salary = 1;
    google.protobuf.Timestamp SalaryDate =2;
}
Run Code Online (Sandbox Code Playgroud)

目前,我们使用double作为Salary数据类型。但这导致内部计算出现问题。

您能否指导我们,我们如何将其定义为gRPC 中的小数?

c# protocol-buffers grpc

4
推荐指数
1
解决办法
5912
查看次数

Java BigDecimal,相当于C#的Decimal(int [] bits)构造函数

我试图将包含使用C#应用程序生成的数据的输入缓冲区(字节数组)转换为java数据类型.我对C#的DecimaldataType 有一些问题.

C#示例:

decimal decimalValue = 20.20M;
//converting a Decimal value to 4 integer vlaues
int[] intPieces= Decimal.GetBits(decimalValue); //{2020,0,0,131072}
//using native constructor to rebuild value
Decimal newDecimalValue = new decimal(intPieces); //20.20
Console.WriteLine("DecimalValue is " + newDecimalValue);
Run Code Online (Sandbox Code Playgroud)

但是Decimaljava中没有(也没有Decimal(int [] bits)构造函数).

C#Decimal Constructor(Int32 [])文档.

java type-conversion

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