如何将CURRENCY类型转换为long类型?
我需要能够这样做,因为我想使用%d将CURRENCY类型的值放入sprintf中
我很难用这个,感谢帮助:)
答案 0 :(得分:1)
我假设您想要将CURRENCY值转换为long。正如您在文档中看到的那样,货币只是一个64位整数,存储货币单位的1/10000。单位我指的是美元,英镑,欧元等。不是便士,美分等。您所要做的就是这样做:long value = (long)currency.int64
。请注意,如果成员int64
中的值大于LONG_MAX
或小于LONG_MIN
,则会出现截断错误。
为什么需要将值转换为long?你不能按原样使用CURRENCY
联盟吗?
答案 1 :(得分:0)
如果货币是字符串,您可以使用
sscanf(currency, "%d", &myLong);
如果是任何其他基本数据类型,您可以只进行类型转换,例如
long myLong = (long)currency;
如果您有关于数据类型的更多信息,请将其编辑到您的帖子中。
答案 2 :(得分:0)
CURRENCY是一个在代码中某处定义的类(即它不是本机C ++类型)。
如果由其他人编写,您的类可能已经具有强制转换为int(或long)的能力。您可以尝试通过(1)读取头文件或(2)编译此
来解决这个问题 CURRENCY mymoney;
printf("%d",static_cast<long>(mymoney));
并查看编译器是否允许你逃避 - 如果确实如此,那么很可能已经为该类定义了一个强制转换运算符。
很多人不喜欢你在C ++代码中使用sprintf,但更喜欢使用流。如果是这样,可能会定义<<
运算符 - 您可以尝试通过(1)读取包含文件或(2)编译此代码来确定
CURRENCY mymoney;
std::cout << mymoney << std:: endl;
如果不是,您可能必须编写代码来重载Currency类上的<<operator
和/或long转换运算符,以返回流输出和转换为其他类型所需的值。