ios-Objective-c 关于 double 的一个简单的问题

问题描述

Objective-c 关于 double 的一个简单的问题

刚刚接触计算机编程语言,所以问出的问题有些简单,幼稚,望大家体谅
以下是我的代码,在 Xcode 开发环境中编写的

double f;
    printf("请输入您的分数:");
    scanf("%le",&f);
    if (f == 0) {
        NSLog(@"无分数");
    }else if (f < 60){
        NSLog(@"不及格");
    }else if (f < 80){
        NSLog(@"及格");
    }else if (f <= 100){
        NSLog(@"优秀");
    }else{
        NSLog(@"超出分数范围");
    }

这是一个简单的测试,但是让我疑惑的是为什么第三行代码中
一定要用 %le 函数呢?换成 %e 或者 %d 都不行!
请教大家原因是什么?

解决方案

Obejctive-C 中数据类型可以在 int 、 float 、 double 和 char 类型前面加上限定词,限定词有: long 、 long long 、 short 、 unsigned 和 signed ,这些限定词从而增强了基本类型 int, float, double, char 。
· long int ,在大部分计算机中代表 32 位整数,在整数后面加 L (或 l )表示,例如: long int numberOfPoints = 131071100L , NSLog 函数中格式化字符串使用 %li 表示;
· long long int 可以指定更加宽泛的整数类型,保证变量至少 64 位宽度。 NSLog 函数中格式化字符串使用 %lli 表示;
· long double ,可以指定更加宽泛的 double 类型,要显示这个可以在尾部使用 L (大小写)表示, 1.234e+7L 。 NSLog 函数中格式化字符串使用 %Lf 、 %Le 和 %Lg 表示;
· short int 用来指定存放相对小的整数,一般是占用 int 类型的一半。大部分计算机是 16 位;
· unsigned int ,告诉编译器只是接受整数,在数值之后放字母 u (或 U )表示,例如: 0x00ffU ;编写整数时候,可以将字母 u (或 U )和 l (或 L )组合起来,例如: 20000UL ;

而其实就是NSlog 的一种格式化输出。

解决方案二:

L是long的意思

解决方案三:

因为double会导致微量失真,0.01会变成0.00999999……

时间: 2024-12-27 08:29:05

ios-Objective-c 关于 double 的一个简单的问题的相关文章

iOS开发:使用 UITableView 创建表格应用演练(1) 一个简单的表格应用

在很多iOS应用中都有UITableView控件的身影.让我们的系列教程也从UITableView开始吧. 目标 任何一个伟大的iOS应用都源自一个伟大的构想.虽然我们只是再做演练,但演练也同样需要一个伟大的构 想!这样我们会产生更加浓烈的兴趣,目标更加明确,同时不会纠结于具体的细节之中. 提示:细节是在不断重复中逐渐掌握的,过早的进入细节很容易让人迷失方向. 现在用微博的人越来越多,假设我们需要一个管理"微博关注人"的列表这么一个应用,能够 帮助我维护微博关注人的信息.怎么样?对于一

用Swift构建一个简单的iOS邮件应用的方法_Swift

在前几个月内,我一直在做InboxKit的研究,它是关于Inbox平台的IOS SDK.Inbox为和邮件数据的交互提供高层API,使得你可以忽略IMAP,Exchange,MIME的解析以及thread探测(当然还有很多其他事情...),并使你致力于完成富有创意的APP的创作上.我们的目标很简单:尽可能地打造一个优雅的,跨提供商的邮件应用.毕竟,它很难. 在Objective-C中,InboxKit使得创建邮件体验变得很轻松,那么,Swift又如何呢?Swift在WWDC后已正式被IOS社区所

【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证

[原文地址:http://blog.csdn.net/toss156/article/details/7638529] 今天给大家带来一个简单的登陆验证,用的是ASIHttpRequest 这个开源类库,使用的方法很简单,从网上下载下来以后,添加到项目中,并添加一下这些框架. 下面上代码 [cpp] view plaincopy //   //  ViewController.h   //  NetDemo   //   //  Created by zhouhaifeng on 12-6-6.

一个简单的XML Schema的例子

xml 我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的.另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好

一个简单的sessionBean创建过程(jbx+wl8.1sp3)

session|创建|过程 一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理.显示时间方面的问题等.下面笔者就开发中的一些体会介绍给大家. 我们知道,Java的数据类型分为三大类,即布尔型.字符型和数值型,而其中数值型又分为整型和浮点型:相对于数据类型,Java的变量类型为布尔型boolean:字符型char:整型byte.short.int.long:浮点型float.double.其

一个简单的XML Schema例子

我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的. 另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好处是XML

WCF后续之旅(13) 创建一个简单的WCF SOAP Message拦截、转发工具

WCF是.NET平台下实现SOA的一种手段,SOA的一个重要的特征就基于Message的通信方式.从Messaging的角度讲,WCF可以看成是对Message进行发送.传递.接收.基础的工具.对于一个消息交换的过程,很多人只会关注message的最初的发送端和最终的接收端.实际上在很多情况下,在两者之间还存在很多的中间结点(Intermediary),这些中间结点在可能在实际的应用中发挥中重要的作用.比如,我们可以创建路由器(Router)进行消息的转发,甚至是Load Balance:可以创

c#-c++写的一个简单学生信息管理系统,求助。

问题描述 c++写的一个简单学生信息管理系统,求助. 编译不报错,就是运行不出来 #include<iostream.h> #include<stdio.h> #include<string.h> class student//定义学生信息类 {public: char name[20]; char num[10]; char banji[20]; int math,english,chinese,computer; int sum; double ave; void

算法-c++的一个简单的实现 求大神帮帮忙

问题描述 c++的一个简单的实现 求大神帮帮忙 1. 定义一个普通帐户类Account,成员变量包括:string型的m_acctNo(账号)和m_acctPass(取款密码),double型的m_balance(余额).成员函数包括构造函数,取款WithDraw(double m).存款Deposit(double m).修改密码ChangePass()和显示帐户信息Display(). 以Account类做基类,派生出信用卡类Credit,新增成员变量m_overDraft,表示信用卡透支额