2988 保留小数 2

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
 
题目描述 Description

这个难度是吸引你点进来的。(其实难度挺大)

保留小数 的加强版。加强了数据和描述。

有一个实数,要求保留k位小数。请输出结果。

输入描述 Input Description

两行。

第一行,要保留的数;

第二行,k

输出描述 Output Description

输出保留小数的结果。(四舍五入)

样例输入 Sample Input

(样例1)

8

2

(样例2)

7.03

1

(样例3)

7.0003

0

(样例4)

9.9

-1

(样例5)

0.99

3

(样例6)

-9999.2

0

样例输出 Sample Output

(样例1)8.00

(样例2)7.0

(样例3)7

(样例4)10

(样例5)0.990

(样例6)-9999

数据范围及提示 Data Size & Hint

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的更多相关文章

  1. codevs 2894 保留小数

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给你一个实数,小数点后不超过50位,请你保留到小数点后n位(四舍五入!!!) 输 ...

  2. 格式化 float 类型,保留小数点后1位

    """  练习 :   小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,   并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ...

  3. c#保留小数点后位数的方法

    Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...

  4. 总结C#保留小数位数及百分号处理

    方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...

  5. c++保留小数问题,如有不足或错误,欢迎指出

    #include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...

  6. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

  7. java中double变量保留小数问题

    (转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...

  8. input内强制保留小数点后两位 位数不足时自动补0

    input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...

  9. php number_format()保留小数点后几位

    [PHP_保留两位小数的相关函数] php保留两位小数并且四舍五入 Php代码   1     $num = 123213.666666;  2     echo sprintf("%.2f ...

随机推荐

  1. mysql 基本

    mysql -u root -p 输入密码进入数据库 show database; 查询当前库 use databasename 切换到某个库 show tables; 列出当前数据库的表 desc ...

  2. Guest Speaker on 2015 WinHEC Shenzhen 秋季大会

    继今年3月份的WinHEC春季大会,秋季大会于11月10日-11日深圳如期举行.此次大会的主题是Windows 10 IoT和Microsoft Azure,云和端的无缝连接是微软物联网解决方案的典型 ...

  3. 专用服务器模式&共享服务器模式

    连接ORACLE服务器一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接(shared server).那么两者有啥区别和不同呢?下面我们将对这两者的区别与不同一一剖析 ...

  4. linux shell for循环使用命令中读取到的值实例

    #!/bin/bash file="states" for state in `cat $file` do echo "Visit beautiful $state&qu ...

  5. ActiveMQ 5 入门

    apache-activemq-5.13.2 ActiveMQ使用JAAS授权的配置方式 <plugins> <!– 使用login.config配置授权用户 --> < ...

  6. 发现 OpenStack: 架构、功能和交互

    原文:http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-overview/index.html OpenStack 是由 ...

  7. jni调试3(线程调试env变量问题)

    jni层调试线程死机原因 一,导致死机原因:   jni层中  线程函数中  只要添加调用env 的函数 ,,就会死机     二,解决方法 第一我们应该理解: ①(独立性) JNIEnv 是一个与线 ...

  8. vuejs mvvm图解

  9. iis上如何架设HTTPS网站

    对于HTTPS网站,大部分都比较陌生,觉得很难,其实只要申请好证书,只要在服务器上做下小配置就可以完成 首先,申请一个ssl证书 免费申请https://buy.wosign.com/free/Fre ...

  10. WPF中监视DependencyProperty的变化

    WPF中监视DependencyProperty的变化   周银辉 尽管一个类会提供很多事件,但有时候还是显得不够,比如说前两天我就以为WPF的ListBox控件会有ItemsSourceChange ...