由买买提看人间百态

topics

全部话题 - 话题: atof
1 (共1页)
t****t
发帖数: 6806
1
来自主题: Programming版 - atof strtod 有什么区别
This is the man page of atof(). I think it can not be any more clear.
DESCRIPTION
The atof() function converts the initial portion of the string
pointed to by nptr to double. The behavior is the same as
strtod(nptr, (char **) NULL);
except that atof() does not detect errors.
S**Y
发帖数: 136
2
来自主题: JobHunting版 - 实现atof
看到这么一题:
Implement atof function. eg., +3.5e-2, .03e1, 1e1, 0.0
这个还有逗号的情况,有许多种case,难道一个一个列举? 谁有什么比较clean的解法
啊?
s*****o
发帖数: 1262
3
来自主题: Programming版 - atof strtod 有什么区别
我一般用
if(argc>1) xxx=strtod(argv[1],NULL) 来读取command line的值
我发现atof也有同样的功能
不知道区别是什么,到网上搜了一下介绍strtod stof等的介绍,看不明白
谢谢
t****t
发帖数: 6806
4
来自主题: Programming版 - atof strtod 有什么区别
try google "man atof", you get more or less the same thing at 1st result...
r*******y
发帖数: 290
5
来自主题: Programming版 - c++ 中如何把str转换为float?
atof has its limitations:
http://www.cplusplus.com/reference/clibrary/cstdlib/atof.html
double atof ( const char * str );
Return Value
On success, the function returns the converted floating point number as a
double value.
If no valid conversion could be performed, or if the correct value would
cause underflow, a zero value (0.0) is returned.
If the correct value is out of the range of representable values, a positive
or negative HUGE_VAL is returned.
a*****i
发帖数: 268
6
来自主题: Programming版 - 请教关于float的精度和比较
如果确定原始数据都是2位小数,还是可以atof后直接比较的。
虽然6.44+6.44==12.88不一定成立;atof("12.88") == atof("12.88")总是成立的。
l***i
发帖数: 1309
7
来自主题: JobHunting版 - 上一道我以前喜欢出的题目吧
一个新想法,假设每个token的长度都不大,double类型的精度足够,不停的比两个
double,这样可以避免很多问题。
vector vs1, vs2;
// assume s has only 0-9 and .
// and begin with digit
vector split(string s)
{
vector ans;
int i;
for(i=0; i int p=i;
for(; i ;
ans.push_back(s.substr(p, i-p));
return ans;
}
}
vs1 = split(s1);
vs2 = split(s2);
for(int i=0; i string s1, s2;
s1 = "0." + vs1[i];
s2 = "0." + vs2[i]... 阅读全帖
p****e
发帖数: 3548
8
搞了个复杂的。。
// Type your C++ code and click the "Run Code" button!
// Your code output will be shown on the left.
// Click on the "Show input" button to enter input data to be read (from
stdin).
#include
using namespace std;
bool OpHigherOrder(char c1, char c2)
{
if(c1 != '(' && c2 == ')')
return true;
else if(c1 == '(')
return false;
else if((c1 == '*' || c1 == '/'))
return true;
else if((c1 == '+' || c1 == '-') && (c2 == '+' || c2 == '-'))
... 阅读全帖
p****e
发帖数: 3548
9
搞了个复杂的。。
// Type your C++ code and click the "Run Code" button!
// Your code output will be shown on the left.
// Click on the "Show input" button to enter input data to be read (from
stdin).
#include
using namespace std;
bool OpHigherOrder(char c1, char c2)
{
if(c1 != '(' && c2 == ')')
return true;
else if(c1 == '(')
return false;
else if((c1 == '*' || c1 == '/'))
return true;
else if((c1 == '+' || c1 == '-') && (c2 == '+' || c2 == '-'))
... 阅读全帖
r*********r
发帖数: 3195
10
来自主题: Programming版 - c++ 中如何把str转换为float?
这些function的适用性和性能成反比。
atof 只能用在 float/double。
sscanf 只能用在 integer, float.
lexical_cast 则可以使用在任何有operator>>定义的类型。
从性能上看,我猜的是 sscanf 比 lexical_cast 快5到10倍。
atof 又比 sscanf 快5倍左右。
还有,sscanf 是最容易用错的一个函数,对初学者简直是噩梦。
r****t
发帖数: 10904
11
来自主题: Programming版 - python 问题
>> locale.setlocale(locale.LC_NUMERIC, 'en_US.UTF-8')
>> locale.atof('100,340.23')
100340.23
python 是 strong typed, 怎么说类型转换比较弱? 就用
try: return locale.atof(content)
except: return "Illegal"
这样就可以了。
a******d
发帖数: 191
12
来自主题: Programming版 - 请教关于float的精度和比较
If you know exactly, the only steps involved are
1. Parsing string
2. Compare sesults in the previous step
Then you can still test
float(atof(stringA)) > float(atof(stringB))
Results guarenteed to be correct still.
c*********t
发帖数: 2921
13
来自主题: JobHunting版 - a silly question
是不是先调用 float value = atof("3.72"),变成浮点数。
然后把浮点数value按照它在内存中的二进制打印出来?
就是把value弄成整数,然后写一个打印整数二进制的函数。
int i = *(int *)&value;
mybinprint(int i);
q****x
发帖数: 7404
14
来自主题: JobHunting版 - 实现atof
regex.
s******n
发帖数: 3946
15
atoi太简单了,至少写个atof
l****c
发帖数: 838
16
来自主题: JobHunting版 - C的fscanf的问题 (转载)
You should read in the string and parse.
You don't know how long the first part string is or how long the number is.
So if you define:
char tempprice[10];
char ticker[10];
You have the risk of buffer overflow.
Here is my solution. I debug it as I wrote it, so it is not optimized.
it is pure C. You can get result with 2 lines of perl or python code
============================
#include
#include
#include
int main()
{
char *str = "GOOD|89.34";
char *ptoken, *... 阅读全帖
m*****6
发帖数: 38
17
来自主题: JobHunting版 - 微软sdet onsite面经
周四的面试,第一个人的题目是remove duplicate linkedlist 和test她的眼镜
第二个人是,给你一个直角三角形的两边,算第三边
前面两个人答得还行,然后换了一幢楼面第三个
边吃饭边问如何test 一个touch screen,由于自己做过那方面,聊的还比较好,面好
后让我到一个角落等了15分钟,他又去叫了另外一个人
第四个人是如何merge 两个sorted array和给你时针和分针的角度,算出时间,基本也
都顺利答出来了。然后让我去楼下等了半小时,他又叫了另外一个给我面,这个人第一
题比较难,remove duplicate word in
a string 必须用C写,每个word用逗号隔开的,我说能不能用java split 和
hashtable,他说不行,这个没怎么写好,然后让我写了个atof ,基本都写出来了。
已经过去一天了,还是没有结果,据说微软的offer给的很快啊,担心会不会是拒信
l*****a
发帖数: 14598
18
来自主题: JobHunting版 - 微软sdet onsite面经
他带框架还是隐性?
WOW atof, not atoi
m*****6
发帖数: 38
19
来自主题: JobHunting版 - 微软sdet onsite面经
自己以前准备过atoi,但是atof重来没写过,现在临时写的
h*******k
发帖数: 12
20
来自主题: JobHunting版 - 新鲜SDET M onsite 面经 [update offer]
1 M*N 行列升序矩阵找X。
2 求时针分针夹角。
3 atof。
4 一条龙判赢。
一直向板上学习,回报各位同学,祝大家找工作顺利!
面试当天晚上收到结果给offer。
今天通知offer详细内容:90K base+50K stock+5K signup+5K relocation。
由于我面的微软在北卡,招聘那哥们说我的base等同于西雅图的100k。。。我也不知道
是真是假。。
总结:
答程序题的时候不要着急,慢慢写,宁可写得慢不能有错。写之前花时间和面试官
交流确定题目的明确含义,包括合法输入,数据类型,时空限制等,写的过程中解释每
一行代码的意义,充分考虑边界条件。总之心态要好。。。
P*******y
发帖数: 168
21
来自主题: JobHunting版 - 新鲜SDET M onsite 面经 [update offer]
谢谢分享,又一个atof啊
j*****y
发帖数: 1071
22
来自主题: JobHunting版 - 新鲜SDET M onsite 面经 [update offer]
bless
一条龙是什么阿 ? tic tac toe ?
double atof(char *s)
{
int i = 0;
while(s[i] && s[i] == ' ')
{
++i;
}
double num = 0;
bool flag_signal = false;
bool negative = false;
bool flag_dot = false;
vector afterDot;
while(s[i])
{
if(s[i] == '+' || s[i] == '-')
{
if(flag_dot)
{
break;
... 阅读全帖
h*******k
发帖数: 12
23
来自主题: JobHunting版 - 新鲜SDET M onsite 面经 [update offer]
atof 应该要考虑溢出的情况。。。比如输入了老长老长的一个数。。
l*********y
发帖数: 142
24
来自主题: CS版 - 请教一个double的精度问题
下面这个方程计算 num! 的结果在base进制下的位数
比如说 5!的结果在10进制下是3位数,在16进制下是2位数。
题目限定 1<= num <= 2^20, and 1 <= base <= 800.
int GetNumDigit(int num, int base)
{
double result = 0;
for (int i = 1; i <= num; i++) {
result += log(i);
}
int digit = ceil(result / log(base) + 1e-10);
return digit;
}
我想请教1e-10在这里的使用? 我读过很多float and double精度的文章,所以知道result/log(base)的结果会有精度loss,但是我对精度补偿值的用法不是很懂。
包括何时用 还有 如何定值。以前还碰到一个例子是atof 时加了1e-10,
现在结合这个例子就完全没方向了。
谢谢了!
h**p
发帖数: 377
25
来自主题: Programming版 - How to conver CString to long long type?
我现在用的是atof(),先转成double
让後由double强制转换成long long

or use stringstream in c++
for example
const char* cstring="100000000"
long long num;
std::string lonstring;
std::stringstream converter;
converter< coverter>>num;
from long to string
converter< converter>>longstring;
c******s
发帖数: 270
26
来自主题: Programming版 - 问个C++的String问题
atoi, atof
k****f
发帖数: 3794
27
FILE*fp=fopen("youdata","r");
char buf[1000];
int first,second;
char third[10],fourth[10];
double fifth;
while(fgets(buf,sizeof(buf),fp)){
char*p=strtok(buf,"|");
if(p==NULL)break;
first=atoi(p);
p=strtok(NULL,"|");
second=atoi(p);
p=strtok(NULL,"|");
strcpy(third,p);
p=strtok(NULL,"|");
strcpy(fourth,p);
p=strtok(NULL,"|");
fifth=atof(p);
}
fclose(fp);

how
.
me
f******y
发帖数: 2971
28
来自主题: Programming版 - c++ 中如何把str转换为float?
atof 在C++里不常用吗?
p***o
发帖数: 1252
29
来自主题: Programming版 - c++ 中如何把str转换为float?
You don't get it. Convert std::string to const char * is just one function
call. atof is the other and that's all.
Why bother to create/name an xxxxstream object, send in the string and
call the overloaded operator >>?
t****t
发帖数: 6806
30
来自主题: Programming版 - c++ 中如何把str转换为float?
if you know you have char* and you want to double, then it is easier to use
atof
but stream works with template. e.g. you may say
template
void convert_to_whatever(const string& s, T& value)
{
istringstream iss(s);
iss>>value;
}
a good programmer can choose whatever tool that best fits the situation.
p***o
发帖数: 1252
31
来自主题: Programming版 - c++ 中如何把str转换为float?
Yeah, but hardly to believe a guy knows how to write convert_to_whatever
will ask that question. And I would specialize the template to use atof
for double (need to change your design though).

use
r*********r
发帖数: 3195
32
来自主题: Programming版 - c++ 中如何把str转换为float?
well, you have to put the usage in the right context.
if you are parsing millions of strings into floats (maybe
in high throughput networking environment?), then yeah,
atof or sscanf run much faster.
if you are only parsing the user input in an interactive
environment, why do you even care the complexity of the function
call?
r*********r
发帖数: 3195
33
来自主题: Programming版 - c++ 中如何把str转换为float?
the error condition checking of c functions is so inconsistent.
in the case of atoi, atof, a return value of 0 simply doesn't tell whether
there is an scanning error or a 0 is correctly scanned.
n*e
发帖数: 50
34
来自主题: Programming版 - python 问题
问题是他是csv里面带着 "," 的数字,假定不知道数字的位数有多少,不是很方便。
需要先知道怎么把那个数字field从两边的field里面分出来。
不过这个locale.atof我第一次见,收藏一下。
r****t
发帖数: 10904
35
来自主题: Programming版 - python 问题
只要 field 之间是 " ," 或者 " ," 分隔的,用这个 locale.atof 就有办法, 不需
要知道数字位数是多少。
反过来讲,如果 field 之间是 "," (没空格)分隔的,单个 field 里面的数字也是用
一样的分隔,就是人眼睛也不知道该如何分。
e******r
发帖数: 220
36
来自主题: Programming版 - a C language question
补充一下, 每十个数都差不多是下面的样式
206440.008 47.98979950 16.27552498 260.678058 0.0 74.40 0.14 0.37 -1.10 0.02
好象用strtok就可以把十个数parse出来, 可是如何检测每个字符串是float呢? 难道用atof()吗?
b*d
发帖数: 75
37
来自主题: Programming版 - how to convert str to double
in c++. i've used sstream, atof, strtod, none of them give me good precision
eg. 112.84375->112.844
haven't try sprintf but i guess it's the same.
i've also tried >>std::setprecios(20) and it doesn't help. the output
container is declared to double.
any idea how to keep the precision in the string? perhaps i have to use
boost lexical cast...
z****e
发帖数: 2024
38
来自主题: Programming版 - atof strtod 有什么区别
master shifu, 你哪里找的这个man page?
t****t
发帖数: 6806
39
来自主题: Programming版 - atof strtod 有什么区别
on my linux machine -- why do you care...
z****e
发帖数: 2024
40
来自主题: Programming版 - atof strtod 有什么区别
我木有找到。
s*****o
发帖数: 1262
41
来自主题: Programming版 - atof strtod 有什么区别
thanks a lot!!
s*****g
发帖数: 5159
42
来自主题: Programming版 - 请推荐一本语言方面的C++书籍
问了好多virtual的问题,挺复杂的,我就不熟。
比如面我的是个物理phd,在考virtual的时候写了四个类(派生关系)、四个函数纠缠
了很久,编程就考了一个atof。
我现在不能再抱侥幸心理了,语言必须补上。你当我是一个1999年的C++程序员,推荐
书吧。
z****e
发帖数: 2024
43
来自主题: Programming版 - 请推荐一本语言方面的C++书籍
你太牛鼻了。
简直是铁人啊!轻伤不下火线啊。
而且面试google,只问atof,牛人啊。
早日康复。
g*****1
发帖数: 998
44
来自主题: Programming版 - 请教关于float的精度和比较
文件中原始数据都是小数点后只有2位的比如 123.88 96.65
然后我用了float price = floor(atof(csvCell.c_str())*100)/100;
我知道一般c++里float数不能直接比较,因为看上去一样,可能不一样,
可是我保留了小数点后只有2位之后也不能直接比较吗
t****t
发帖数: 6806
45
strtod, aka atof()
t****t
发帖数: 6806
46
我上次需要写一段code读一堆大文件, 文件里全是floating point number. 我一开始就
拿标准的strtod/atof写, 发现很慢. 后来到网上搜了一段code 代替strtod, 发现效率
提高400%以上...
r*******n
发帖数: 3020
47
C 程序
char line[80];
char result_time[max][80];//结果1
float result_data[max]; //结果2
FILE *fp=fopen("data.dat","r");
int i=0;
while(fgets(line, 80,fp)){
int j=0;
while(line[j] != ',')
j++;

line[j]='\0';
strcpy(data_string+i,line);
strcpy(line, (line+j+1));
result_data[i] = atof(line);
}
fclose(fp);
1 (共1页)