vb.net和c++之间的文字精度为0.57
Literal 0.57 value less precision between vb.net and c++
我有一个在c++中写入的dll,我有函数
int FiscalPrinter::Pay(const int iPayType,const int iPayForm,
System::String ^sPayFormDescription, const double dAmount) {
...
}
现在在vb.net 中
dAmount = 0.57
If (FiscalPrinter.Pay(iPayType, iPayForm, sPayFormDescription, dAmount) =
FiscalPrinter.ansOK) Then
问题是在vb.net中发送0.57 c++的dll接收0.5699999999995,
读msdn它说
浮点值提供了它所代表的数字。例如,如果我们比较将.1乘以10,再将.1乘以.1九次,我们就知道了此外,由于它还涉及八项业务结果越不精确。
现在,如果我发送0.570000000000000006 c++,则接收一个更准确的值
那么,我应该如何发送0.57或任何合适的值??
使用整数,可以用美分表示货币:
iAmount = 57
你的功能应该是
int FiscalPrinter::Pay(const int iPayType,const int iPayForm,
System::String ^sPayFormDescription, const int iAmount) {
整数没有浮点值那样的舍入问题。有关更多信息,请参阅Oracle的文章"每个计算机科学家都应该知道浮点运算"。
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 正在将csv文件读取为双精度矢量
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何在C++中的同一函数中使用字符串和双精度
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 构造<int>具有 2 个字符串文字的向量
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 如何打印boost多精度128位无符号整数
- 如何从char16_t字符串文字中读取双精度?
- C++中是否有一个浮点文字后缀来使数字的精度翻倍
- vb.net和c++之间的文字精度为0.57