最高有效数字侧的第N位
Nth digit from Most significant digit side
本文关键字:有效数字 更新时间:2023-10-16
我想写一个函数int returnNthDigit(long long int number, int position) {}
,使它从左侧返回第N位数字。例如CCD_ 2必须返回4。类似地,returnNthDigit(45006, 2);
必须返回5。我不允许使用任何循环语句。下面是我使用循环得出的一个解决方案。
#include <iostream>
#include <math.h>
int returnNthDigit(long long int number, int position)
{
int numberOfDigits = log10(number) + 1;
int iteration = numberOfDigits - position;
while (iteration != 0)
{
number = number / 10;
--iteration;
}
return number % 10;
}
int main() {
std:: ios_base::sync_with_stdio(false);
std:: cout << returnNthDigit(230045, 5);
return 0;
}
我能做得更好吗?
如果允许您使用log/pow函数,那么您就可以了。考虑输入123:
int log_base10 = log10(number); // returns 2;
int divide_by = pow(10, log_base10 - index - 1); // returns 10 if index == 2;
int answer = (number/divide_by) % 10; // returns 2;
不过,要小心log和pow,因为您正在从浮点转换为整数。
您实际上是在"截断"最低位的数字,然后用% 10
操作检查最低有效位。
如果你可以使用字符串,那就更简单了:
auto str = std::to_string(number);
int answer = str[position-1] - '0';
相关文章:
- 最高有效数字侧的第N位
- 无符号的 int 到有效数字
- 如何在C++中有效地将数字值重新分配给字符数组
- 将 C 函数转换为 C++ 以检查数字是否有效
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 如何知道文本文件中的输入是否是 C++ 中的有效数字
- 将一个数字拆分为多个数字,每个数字只有一个有效位
- 如何以更有效的方式检查一个数字是否是素数?
- 有效创建数字签名的正确方法是什么?我可以使用DSA_sign_setup()吗?
- 如何在整数数组中有效地存储大量数字?C++
- 为什么我输入的数字只读到6个有效数字
- 如何删除C++中浮点数的最后一个有效数字/尾数位
- 在C++中将字符串转换为带完整有效数字的浮点值[修复了在开发人员C++中工作的问题]
- 为什么用“std::chrono”进行时差测量时,与“double”类型相比,用“float”类型给出的有效数字更多
- 有效数字在增加
- 如何检查两个数字是否在浮点类型的精度限制的有效数字"x"范围内?
- 在没有科学记数法的c++中格式化有效数字
- 刷新到python浮点数中的零和/或有效数字
- 为什么在显示矢量<长双精度>时看不到所有有效数字?
- 如何将浮点数与 int 正确相乘并获得仅受有效数字影响的结果