我在这里很困惑。为什么我的这个代码不能像它应该的那样工作..
以下是代码:
void print(int x) {
x = 140;
int i,total, length, value;
if (x < 10){
value = 0;
}
else {
int sum = 1;
for (i = 0 ; i < 10 ; i++){
total = 10 * sum;
sum = total;
length = x / total;
if (length < 10 && 1 <= length){
value = i+1;
break;
}
}
}
value = pow(10,value);
printf("%d\n",value);
}
让我解释一下代码应该如何工作:
它需要一个整数x并打印出10的最高功率,它可以除以。
因此,如果X = 80,则应打印10,如果x = 12435,则应打印10000。 但这并不能很好地处理我的代码...如果x = 140,它会输出99但是。如果x = 1400,则再次打印1000,如果x = 14000,则打印9999,如果x = 140000则打印100000,序列继续...
我已经在Java中尝试了完全相同的代码,它运行得非常好! 为什么它不适用于C ??
答案 0 :(得分:0)
pow()返回一个double值,您将其转换为整数。因此,它将被截断,而不是舍入。
你应该试试
var results = doc.Descendants("book").Select(x => new BookModel // <= missing
{
Author = x.Element("author").Value,
Price = decimal.Parse(x.Element("price").Value)
/* your properties*/
}