{ }codelper
浮点除法P0216

每升油能跑多远

一辆汽车跑了 d 公里,用了 l 升燃油。
一行给出整数 d 和 l,用一个空格分开。
输出每升燃油跑的距离,也就是 d ÷ l,小数点后恰好两位。
商是整数时也要写两位(25 ÷ 5 → 5.00)。
输入只会给出 d × 100 能被 l 整除的情况。
所以商在小数第二位以内就结束,不需要四舍五入。

输入
1 ≤ d ≤ 100,000,1 ≤ l ≤ 1,000,d × 100 能被 l 整除
输出
一行 d ÷ l,小数点后恰好两位
样例 1 · stdin
25 2
stdout
12.50
样例 2 · stdin
3 4
stdout
0.75
main.py
输入(stdin)

运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。

$ 就绪

请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。

其他语言怎么写?查看各语言题解 · 8 种语言题解

陷阱是整数除法。
C、C++、Java、C# 中 d / l 是两个 int 相除,只留下商(3 / 4 → 0)。
要先把一边变成浮点数:C、Java、C# 写 (double)d / l,C++ 写 static_cast<double>(d) / l。
像 (double)(d / l) 那样除完再转,或者像 double km = d / l; 那样只是存进 double 变量,小数早已被舍掉,3 4 的结果是 0.00。
Python 3、JS、TS、Craykon 的 / 对整数也会算出小数(Python 的 // 只留商)。
第二个陷阱是位数。
直接输出时 Python print(d / l) 和 JS/TS console.log(d / l) 都得到 12.5,商是整数时 JS 输出 5,Python 输出 5.0。
两位小数用 Python f"{x:.2f}"、JS/TS x.toFixed(2)、C printf("%.2f")、C++ std::fixed << std::setprecision(2)、Java String.format("%.2f", x)、C# x.ToString("F2")、Craykon 字符.保留小数(x, 2) 来固定。

Pythonmain.py · 3 行
d, l = map(int, input().split())# Python 3의 /는 정수끼리도 소수까지 나눈다(//는 몫만)print(f"{d / l:.2f}")
JavaScriptmain.js · 3 行
const [d, l] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);// toFixed(2)가 소수 두 자리 문자열을 만든다(12.5 → "12.50")console.log((d / l).toFixed(2));
TypeScriptmain.ts · 3 行
import { readFileSync } from "node:fs";const [d, l]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);console.log((d / l).toFixed(2));
JavaMain.java · 13 行
import java.util.Locale;import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int d = sc.nextInt();        int l = sc.nextInt();        // 한쪽을 double로 바꿔야 실수 나눗셈이 된다        double km = (double) d / l;        System.out.println(String.format(Locale.ROOT, "%.2f", km));    }}
C#Main.cs · 15 行
using System;using System.Globalization; class Program{    static void Main()    {        string[] p = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);        int d = int.Parse(p[0]);        int l = int.Parse(p[1]);        // int끼리 나누면 몫만 남으니 한쪽을 double로        double km = (double)d / l;        Console.WriteLine(km.ToString("F2", CultureInfo.InvariantCulture));    }}
C++main.cpp · 9 行
#include <iomanip>#include <iostream> int main() {    int d, l;    std::cin >> d >> l;    double km = static_cast<double>(d) / l;    std::cout << std::fixed << std::setprecision(2) << km << "\n";}
Cmain.c · 10 行
#include <stdio.h> int main(void) {    int d, l;    scanf("%d %d", &d, &l);    /* int끼리 나누면 소수가 버려진다. (double)로 한쪽을 바꾼다 */    double km = (double)d / l;    printf("%.2f\n", km);    return 0;}
Craykonmain.cray · 5 行
p = 控制台.读行().去空白().分割(" ");d = p[0].转数字();l = p[1].转数字();// 크레이콘의 /는 늘 소수까지 나눈다控制台.输出(字符.保留小数(d / l, 2));