作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
示例输入字符串:
char *str = "12345.567675";
如果我需要小数点后 3 位的精度,则需要输出:
str = "12345.568";
有没有办法在不将字符串转换为 double
然后再转换回字符串的情况下执行此操作?
最佳答案
是的,在高层:
1. 搜索“.”在字符串中。
2.如果'.'的位置+ 3 小于你做的长度。
3.否则,在'.'位置连接字符串+ 3.
4. 这里有点棘手:你需要检查下一个字符是否存在,('.' + 4),如果它的值 >= 5 则转到 4.1(否则转到 5)
4.1.将字符串复制到左侧多一个空格的新字符串(因为在“4”循环中 9.9999 将更改为 10.0000)并设置指向该字符串中最后一个字符的指针 (P)。
4.2.如果 *P 在 0 到 8 之间,则加 1 并转到 5。
4.3.如果 *P 为 9,将其设置为零,将指针向左移动一位 (-1) 并转到 4.2
4.4.如果 *P 是 '.',将指针向左移动一位 (-1) 并转到 4.2
5. 删除小数点右边的所有 0(如果需要,删除小数点本身),你就完成了!!!
6.删除所有内容,并使用双重转换方法...
关于c++ - 我如何在 C++ 中对包含 double 值的字符串强制执行精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012594/
我是一名优秀的程序员,十分优秀!