将 CURRENCY 转换为 long
如何将 CURRENCY 类型转换为 long 类型?
我需要能够做到这一点,因为我想使用 %d 将 CURRENCY 类型的值放入 sprintf
我在这方面遇到了困难,感谢帮助:)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何将 CURRENCY 类型转换为 long 类型?
我需要能够做到这一点,因为我想使用 %d 将 CURRENCY 类型的值放入 sprintf
我在这方面遇到了困难,感谢帮助:)
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
我假设您想转换 CURRENCY 值为 long。正如您在文档中看到的,货币只是一个 64 位整数,存储货币单位的 1/10000。我所说的单位是指美元、英镑、欧元等,而不是便士、美分之类的。您所要做的就是执行以下操作:
long value = (long)currency.int64
。请记住,如果成员int64
中的值大于LONG_MAX
或小于LONG_MIN
,那么您将收到截断错误。为什么需要将值转换为long?您不能按原样使用
CURRENCY
联合吗?I am assuming you want to cast a CURRENCY value to a long. As you can see in the documentation, a currency is simply a 64 bit integer, storing 1/10000ths of a currency unit. With unit I mean Dollar, British Pound, Euro, etc. Not pennies, cents and the like. All you have to do is to do this:
long value = (long)currency.int64
. Remember that if the value in the memberint64
is larger thanLONG_MAX
or smaller thanLONG_MIN
, then you will get truncation errors.Why do you need to convert the value into a long? Can't you use the
CURRENCY
union as is?如果货币是字符串,您可以使用
如果它是任何其他基本数据类型,您可以直接进行类型转换,例如
如果您有有关数据类型的更多信息,请将其编辑到您的帖子中。
If the currency is a string, you can use
If it is any other basic data type, you can just typecast such as
If you have more information on the data type, please edit it into your post.
CURRENCY 是一个在代码中某处定义的类(即它不是本机 C++ 类型)。
如果您的类是由其他人编写的,则您的类可能已经具有转换为 int (或 long)的能力。您可以尝试通过以下方式解决这个问题:(1)读取头文件或(2)编译它
,看看编译器是否允许您摆脱这一点 - 如果是这样,那么很可能已经为该定义了一个强制转换运算符班级。
许多人不喜欢您在 C++ 代码中使用 sprintf,但更喜欢您使用流。如果是这样,则可能定义了
<<
运算符 - 您可以尝试通过 (1) 读取包含文件或 (2) 编译此代码来确定这一点。如果没有,您可能必须编写代码以重载Currency 类上的
< 和/或长强制转换运算符,以返回流输出和强制转换为其他类型所需的值。
CURRENCY is a class which is defined somewhere in your code (i.e. it is not a native C++ type).
Your class may already have the capability to cast to int (or long) if it is written by someone else. You can try to figure that out by (1) readinh the header files or (2) compileing this
and see if the compiler let you get away with that -- and if it does then most likely there is already a cast operator defined for the class.
Many people don't like you to use sprintf in C++ code, but prefer you to use streams. If so there may be a
<<
operator defined instead -- you can try to determine that by (1) reading the include files, or (2) compiling this codeIf not you may have to write the code to overload the
<<operator
and/or the long cast operator on the Currency class to return the values you need for stream output and casting to other types.