Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/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
Azure存储-保存时忽略双小数点_Azure_Azure Table Storage - Fatal编程技术网

Azure存储-保存时忽略双小数点

Azure存储-保存时忽略双小数点,azure,azure-table-storage,Azure,Azure Table Storage,我有一个正确存储在对象属性中的值,但当我将更改保存到Azure存储数据库时,该双精度值将被存储到数据库中,忽略该点(7.11000000003保存为711)。此外,该属性更改为711.0 我如何解决这个问题 该字段在类和数据库表中已设置为double。您的double值是在它自己的字段中,还是在partitionkey或rowkey字段中?PartitionKey和RowKey始终是字符串 我刚刚创建了一个简单的测试,它用一个双字段写入和读取一行,并且值被很好地保留。我通过msdev.com培训

我有一个正确存储在对象属性中的值,但当我将更改保存到Azure存储数据库时,该双精度值将被存储到数据库中,忽略该点(7.11000000003保存为711)。此外,该属性更改为711.0

我如何解决这个问题


该字段在类和数据库表中已设置为double。

您的double值是在它自己的字段中,还是在partitionkey或rowkey字段中?PartitionKey和RowKey始终是字符串

我刚刚创建了一个简单的测试,它用一个双字段写入和读取一行,并且值被很好地保留。我通过msdev.com培训从Bill Lodin的SMS代码中修改了示例SmsMessage类(我将int Delay字段改为float,并将其重命名为MyDouble以便于澄清):

然后我写信给SmsMessageTable:

smsTable.AddObject("SmsMessages", new SmsMessage(destination, message, myDouble));
smsTable.SaveChanges();
我在存储资源管理器的表格中查看这些内容,我的双精度是我输入它们的方式(例如1.2345)

然后,我通过一个简单的linq查询检索分区键中给定的用户名:

var results = from m in smsTable.SmsMessages
                      where m.PartitionKey.Equals(txtDestination.Text.Trim())
                      select m;

我的双精度值都被保留,并强类型化为双精度值。

您的双精度值是在它自己的字段中,还是在partitionkey或rowkey字段中?PartitionKey和RowKey始终是字符串

我刚刚创建了一个简单的测试,它用一个双字段写入和读取一行,并且值被很好地保留。我通过msdev.com培训从Bill Lodin的SMS代码中修改了示例SmsMessage类(我将int Delay字段改为float,并将其重命名为MyDouble以便于澄清):

然后我写信给SmsMessageTable:

smsTable.AddObject("SmsMessages", new SmsMessage(destination, message, myDouble));
smsTable.SaveChanges();
我在存储资源管理器的表格中查看这些内容,我的双精度是我输入它们的方式(例如1.2345)

然后,我通过一个简单的linq查询检索分区键中给定的用户名:

var results = from m in smsTable.SmsMessages
                      where m.PartitionKey.Equals(txtDestination.Text.Trim())
                      select m;

我的double值都被保留并强类型为double。

如何检查该值?本地开发存储在幕后使用SQL Express,因此您可能正在打开SQL并在那里四处探索。我将避免这种情况,而是使用.NET存储客户端库读回该值。我怀疑该值会正确返回


(可能在本地SQL支持的存储中,值以科学记数法存储?

如何检查值?本地开发存储在幕后使用SQL Express,因此您可能正在打开SQL并在那里四处探索。我将避免这种情况,而是使用.NET存储客户端库读回该值。我怀疑该值会正确返回


(可能在本地SQL支持的存储中,该值存储在科学记数法中?

尽管我很欣赏这项工作,而且可能我没有充分地揭露这个案例,但这些都不能真正回答我的问题。这个答案只是为了避免不公平地归因于赏金。悬赏不应自动归因于>=2票的最佳答案。

尽管我很欣赏这一努力,可能我没有充分揭露这一情况,但这些都不能真正回答我的问题。这个答案只是为了避免不公平地归因于赏金。奖励不应自动归因于>=2次投票的最佳答案。

此问题似乎是由于开发人员存储使用的区域性设置造成的。如果查看Dev存储数据库中的TableRow表,数据存储为XML,十进制值使用点作为十进制分隔符。在巴西,点是千分位。我直接在Dev Storage db中编辑了数据,将点更改为逗号(PT-BR十进制分隔符),读取的值为ok。这很奇怪,因为如果在使用PT-BR十进制分隔符时读取的值是ok,那么Dev存储似乎正在使用我当前的区域性设置。但为什么不在保存数据时应用文化


PS:将windows区域设置更改为EN-US解决了这个问题。我想这就是为什么这是我能找到的关于它的唯一帖子。

这个问题似乎是由于开发人员存储使用的区域性设置造成的。如果查看Dev存储数据库中的TableRow表,数据存储为XML,十进制值使用点作为十进制分隔符。在巴西,点是千分位。我直接在Dev Storage db中编辑了数据,将点更改为逗号(PT-BR十进制分隔符),读取的值为ok。这很奇怪,因为如果在使用PT-BR十进制分隔符时读取的值是ok,那么Dev存储似乎正在使用我当前的区域性设置。但为什么不在保存数据时应用文化


PS:将windows区域设置更改为EN-US解决了这个问题。我想这就是我能找到的关于它的唯一帖子的原因。

我知道本地开发存储使用SQL Server Express,我理解你的意思,但这很奇怪,因为在将数据保存到数据库后,值本身会立即更改。忘记数据库中存储的值。属性double松开小数点。例如,此7.11000003在应用程序中变为711.0!它不是用科学符号表示的。你还有别的建议吗?它总是受欢迎的!:)我懂了。我不知道为什么会这样。。。你试过大卫的密码吗?这对你有用吗?不,但我会的。我现在怀疑我们的问题出在我们的BaseEntity上,因为公司的其他成员也有同样的问题,而且还不能解决。谢谢你,斯玛克斯!我知道本地开发存储使用SQL Server Express,我理解您的意思,但这很奇怪,因为在将数据保存到数据库后,值本身会立即更改。忘记数据库中存储的值。属性double松开小数点。例如,此7.11000003在应用程序中变为711.0!它不是用科学符号表示的。你还有别的建议吗?它总是受欢迎的!:)我懂了。我不知道为什么会这样。。。有你