小数点后提取值
extract value after decimal
我在字符串中进行双重数字,因为我想在小数零件之后提取其值我发现串联在这里无法正常工作,str2+=str[n-i]
怎么了?
string str;
cin>>str;
int flag=0;
string str2="";
int n=str.length();
for(int i=0;i<n;i++){
if(str[n-i]=='.'){
flag=1;
break;
}
str2+=str[n-i];
cout<<str2;
}
reverse(str2.begin(),str2.end());
int m = stoi(str2);
我不确定我是否适当地了解您,但是在这里有人问您在问什么。
我想这样做:
#include <iostream>
using namespace std;
int main()
{
double num1=2.323441;
double num2=num1-(int)num1;
cout<<num2;
return 0;
}
打印结果:0.323441
但这并不能给您预期的结果,我认为这是:323441
。
然后我想有2种可能的解决方案:
第一个,'脏'''''''''''''''是您获得的数字,将其乘以10*它的长度:如果有5个小数,则将其乘以100000。将0.323441
转换为323441
。
第二个,正如我链接的答案所说的,使用圆形和功率:
int fractional_part_as_int(double number, int number_of_decimal_places) {
double dummy;
double frac = modf(number,&dummy);
return round(frac*pow(10,number_of_decimal_places));
}
- 使用
std::stod
将string
转换为double
- 然后使用
std::modf
将浮点值分解为积分和分数零件。
或获得double
值后,您可以做:
double d = fpValue - (long)fpValue;
相关文章:
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 如何从 std::atomic 中提取指针 T<T>?
- 为什么istream不支持右值提取
- 如何设置一个范围来提取我想要获得的信息
- 用c++把小数点转换成八进制
- 视觉工作室项目.提取源文件夹名称
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- 从字符串中提取整数并形成一个数组
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 从 std::vector<无符号字符>切片中提取 int?
- 在C++中使用重载提取运算符时出现问题
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- 使用 cin 时接受小数点后的 2 位数字
- 无法从 std::string 中提取C++ Unicode 符号
- 如何从也包含C++字母的文本文件中提取某些数字?
- 如何从适合一定范围的数字中提取数字?
- 小数点后提取值