我一直在使用使用 CocoaTouch 编写的 iOS 应用程序使用 Protocol Buffers,并且遇到了可能相当于十进制数字的新手错误。
Protocol Buffers 没有原生十进制类型 - 请参阅http://code.google.com/apis/protocolbuffers/docs/proto.html#scalar了解所有类型。相反,我做了一个(现在显然不正确的)假设,即浮点数可以代替小数。它没有,因为存在舍入问题。
Cocoa 在 NSDecimal.h 中有一组 C 函数,它们看起来很吸引人。但是,由于我正在与使用 .NET 编写代码的服务器进行通信,因此我需要一种方法来转换为两个系统都可以理解的格式。
我假设我将使用原始“字节”类型在两个系统之间传输数据并在每个环境中转换为本地十进制类型:可可端的 NSDecimal,.NET 端的十进制。在这里,我不清楚如何进行。
我应该使用什么中间格式 - 二进制编码的小数似乎是一种可能性,但我必须自己实现一种算法才能在两个系统上进行转换。
.NET 和 Cocoa 都可以使用一种字节编码的十进制格式吗?
非常感谢。