codevs 2988 保留小数 2
2988 保留小数 2
这个难度是吸引你点进来的。(其实难度挺大)
保留小数 的加强版。加强了数据和描述。
有一个实数,要求保留k位小数。请输出结果。
两行。
第一行,要保留的数;
第二行,k
输出保留小数的结果。(四舍五入)
(样例1)
8
2
(样例2)
7.03
1
(样例3)
7.0003
0
(样例4)
9.9
-1
(样例5)
0.99
3
(样例6)
-9999.2
0
(样例1)8.00
(样例2)7.0
(样例3)7
(样例4)10
(样例5)0.990
(样例6)-9999
k在longlong范围内;
要保留的小数在10000位以内。
如果k为负数,则向前保留。
要保留的小数可以为负数。
/*
这个题竟然是白银题!
可怜的我连怎么保留负数位都不知道!
╮(╯▽╰)╭
无良的我只能粘题解了
*/
#include<iostream>
#include<string>
using namespace std;
string process(string s,long long k)
{
bool negative=s.at()=='-';
if(negative) s=s.substr(,s.size()-);
unsigned point=s.find('.');
if(point == string::npos)
{
s.append(".");
point=s.size()-;
}
if(k>)
{
if(point+(unsigned)k>=s.size())
{
int length=point+k-s.size()+;
int i;
for(i=;i<length;i++)s.append("");
if(negative)s='-'+s;
return s;
}
else
{
string result=s.substr(,point+k+);
if(point+(unsigned)k+<s.size()&&s.at(point+k+)>'')
{
int i=point+k;
while(i>=&&(result.at(i)=='.'||result.at(i)==''))
{
if(result.at(i)=='')result.at(i)='';
--i;
}
if(i>=)++result.at(i);
else result=''+result;
}
if(negative)result = '-' + result;
return result;
}
}
else if(k==)
{
string result=s.substr(,point);
if(point+<s.size()&&s.at(point+)>'')
{
int i=point-;
while(i>=&&result.at(i)=='')result.at(i--)='';
if(i>=)++result.at(i);
else result=''+result;
}
if(negative)result='-'+result;
return result;
}
else
{
string result=s.substr(,point);
long long i=;
while(k--<-)
{
result.at(result.size()-i)='';
++i;
}
bool up=result.at(result.size()-i)>'';
result.at(result.size()-i)='';
if(up)
{
i=result.size()-i-;
while(i>=&&result.at(i)=='')result.at(i--) = '';
if(i>=)++result.at(i);
else result = '' + result;
}
if(negative)result='-'+result;
return result;
}
}
int main()
{
string s;
long long k;
cin>>s>>k;
cout<<process(s, k)<<endl;
return ;
}
codevs 2988 保留小数 2的更多相关文章
- codevs 2894 保留小数
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给你一个实数,小数点后不超过50位,请你保留到小数点后n位(四舍五入!!!) 输 ...
- 格式化 float 类型,保留小数点后1位
""" 练习 : 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点, 并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ...
- c#保留小数点后位数的方法
Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...
- 总结C#保留小数位数及百分号处理
方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...
- c++保留小数问题,如有不足或错误,欢迎指出
#include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...
- 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...
- java中double变量保留小数问题
(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...
- input内强制保留小数点后两位 位数不足时自动补0
input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...
- php number_format()保留小数点后几位
[PHP_保留两位小数的相关函数] php保留两位小数并且四舍五入 Php代码 1 $num = 123213.666666; 2 echo sprintf("%.2f ...
随机推荐
- JVM-操作码助记符
整理如下,用于以后查找: Opcode Mnemonics Note Constants 0x00 nop 无动作 0x01 aconst_null 把 null 推到操作数栈 0x02 iconst ...
- Redis 支持的5种数据结构
redis的崛起绝非偶然,它确实有自己的新东西在里面,它不像Memcached,只能将数据存储在内存中,它提供了持久化机制和数据同步,避免了宕机后的雪崩的问题,即服务器出现问题后,内存中保留的原始数据 ...
- Linux下Oracle 10.2.0.1升级到10.2.0.4总结
最近部署测试环境时,将测试环境ORACLE数据库从10.2.0.1升级到了10.2.0.4,顺便整理记录一下升级过程. 实验环境: 操作系统:Oracle Linux Server release 5 ...
- .NET应用架构设计—面向对象分析与设计四色原型模式(彩色建模、领域无关模型)(概念版)
阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我 ...
- Form 引用方法库
进入注册表,win+R 输入:regedit,找到HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE ,在右侧找到:FORMS60_PATH,双击,把方法库的路径以英 ...
- mybatis 配置返回集合collection时只有一条记录
查询语句配置如下: <select id="selectCustomerList" resultMap="CustomerDtoMap" paramete ...
- Android(Linux)线路规程的使用
一般来说,车载导航主机都需要外接若干个UART的外设,如支持HFP的蓝牙模块.与原车通信的CAN解码盒模块.u-blox的GPS模块和DVD机芯等.早年使用Telechips TCC8902+ ...
- UVA10048 Audiophobia[Floyd变形]
UVA - 10048 Audiophobia Consider yourself lucky! Consider yourself lucky to be still breathing and h ...
- Mysql 存储引擎 InnoDB与Myisam的主要区别
MySQL默认采用的是MyISAM. 1,事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好. MyISAM不支持事务,而InnoDB支持.InnoD ...
- Java — JTree and JTable以及sqlServer的两种连接
使用JTree的步骤: 暂时只能创建一个头结点,创建一个树的结点作为头结点(其子结点也是相同的创建方法):DefaultMutableTreeNode headNode = new DefaultMu ...