Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';默认情况下,t MongoDB C#驱动程序是否使用BsonType.Decimal128表示小数?_C#_Mongodb - Fatal编程技术网

为什么';默认情况下,t MongoDB C#驱动程序是否使用BsonType.Decimal128表示小数?

为什么';默认情况下,t MongoDB C#驱动程序是否使用BsonType.Decimal128表示小数?,c#,mongodb,C#,Mongodb,我很惊讶地看到它使用字符串表示,即使类型是decimal。我必须显式地将表示设置为BsonType.Decimal128 是为了向后兼容吗 我觉得对于大多数应用程序来说,使用BsonType.Decimal128表示全局设置DecimalSerializer是完全正确的,应该是默认设置,但是,由于MongoDB从一开始就不支持decimal,我可以理解为什么它默认为字符串以实现向后兼容性 今晚我会做恶梦。 System.Decimal类型的值序列化为两个 原因: System.Decimal的

我很惊讶地看到它使用字符串表示,即使类型是
decimal
。我必须显式地将表示设置为BsonType.Decimal128

是为了向后兼容吗

我觉得对于大多数应用程序来说,使用BsonType.Decimal128表示全局设置DecimalSerializer是完全正确的,应该是默认设置,但是,由于MongoDB从一开始就不支持decimal,我可以理解为什么它默认为字符串以实现向后兼容性

今晚我会做恶梦。

System.Decimal类型的值序列化为两个 原因:

  • System.Decimal的范围与BSON Decimal128的范围不同,因此可能出现溢出或精度损失
  • 为了向后兼容(驱动程序在使用BSON Decimal128类型之前已将System.Decimal序列化为字符串) 介绍)
  • 如果要将应用程序配置为序列化System.Decimal 作为BSON Decimal128,您可以通过添加以下配置来实现 应用程序的代码:

    var decimalSerializer = new DecimalSerializer(BsonType.Decimal128, new
    RepresentationConverter(allowOverflow: false, allowTruncation:
    false)); 
    BsonSerializer.RegisterSerializer(decimalSerializer); 
    
    您必须尽早注册此序列化程序。至少是这样 必须在任何系统之前注册。十进制值被序列化

    System.Decimal类型的值序列化为两个 原因:

  • System.Decimal的范围与BSON Decimal128的范围不同,因此可能出现溢出或精度损失
  • 为了向后兼容(驱动程序在使用BSON Decimal128类型之前已将System.Decimal序列化为字符串) 介绍)
  • 如果要将应用程序配置为序列化System.Decimal 作为BSON Decimal128,您可以通过添加以下配置来实现 应用程序的代码:

    var decimalSerializer = new DecimalSerializer(BsonType.Decimal128, new
    RepresentationConverter(allowOverflow: false, allowTruncation:
    false)); 
    BsonSerializer.RegisterSerializer(decimalSerializer); 
    
    您必须尽早注册此序列化程序。至少是这样 必须在任何系统之前注册。十进制值被序列化


    我希望得到更多解释>系统的范围。十进制与BSON十进制128不同,因此可能出现精度溢出或丢失。我希望得到更多解释>系统的范围。十进制与BSON十进制128不同,因此可能出现精度溢出或丢失